Имя: Пароль:
1C
1С v8
БП 2.0. Программное перезаполнение счет-фактуры
0 KUBIK
 
09.08.12
16:40
БП 2.0.28.6 - типовая
Столкнулся с проблемой:
С пом. внешней обработки за период формирую счета-фактуры выданные на основании данных доков РТУ.
При этом, если у дока нет СчФ - она создается. Здесь все ОК.
Если же у дока есть непроведенная СчФ - я хочу обновить ее реквизиты:

Код:

    НайденаСФ = УчетНДС.НайтиПодчиненныйСчетФактуру(ДокОсн, "СчетФактураВыданный");
    Если НайденаСФ = Неопределено Тогда
       
        Док = Документы.СчетФактураВыданный.СоздатьДокумент();
       
        Док.Организация=Организация;    
        Док.Ответственный=Ответственный;
        Док.УстановитьВремя(РежимАвтоВремя.НеИспользовать);
        Док.Номер=НомерДок;
        Док.Дата=ДатаДок+ДБФ.TimeH*60*60+ДБФ.TimeM*60+ДБФ.TimeS;
        Док.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
        Если УчетНДС.ПолучитьВерсиюПостановления(Док.Дата)=2 Тогда
           
            Док.КодВидаОперации="01";
            Док.Выставлен=Истина;
            Док.ДатаВыставления=ДатаДок;
            Док.КодСпособаВыставления=1;
           
        КонецЕсли;    
       
        Док.Заполнить(ДокОсн);
       
       
        Попытка
            Док.Записать();
        Исключение
            Сообщить("Не удалось создать Счет-фактуру для документа №"+НомерДокОсн
            + " от " + Формат(ДатаДокОсн,"ДЛФ=Д") + ", "+ОписаниеОшибки(),СтатусСообщения.Важное);
        КонецПопытки;
       
    Иначе
       
        ДокСФ=НайденаСФ.ПолучитьОбъект();
        Если ДокСФ.Проведен Тогда
            Сообщить("Найден проведенный документ :"+ДокСФ+". Пропущен");
            Возврат;
        Иначе
            // перезаполним документ заново            
            ДокСФ.Ответственный=Ответственный;
            ДокСФ.УстановитьВремя(РежимАвтоВремя.НеИспользовать);
            ДокСФ.Номер=НомерДок;
            ДокСФ.Дата=ДатаДок+ДБФ.TimeH*60*60+ДБФ.TimeM*60+ДБФ.TimeS;
            ДокСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
            Если УчетНДС.ПолучитьВерсиюПостановления(ДокСФ.Дата)=2 Тогда
               
                ДокСФ.КодВидаОперации="01";
                ДокСФ.Выставлен=Истина;
                ДокСФ.ДатаВыставления=ДатаДок;
                ДокСФ.КодСпособаВыставления=1;
               
            КонецЕсли;    
           
            ДокСФ.ДокументыОснования.Очистить();
            ДокСФ.ДатаНомерДокументовОплаты.Очистить();
            ДокСФ.Авансы.Очистить();
           
            ДокСФ.Заполнить(ДокОсн);

// вот после этого открываются формы счет-фактуры!!!!            
            Попытка
                ДокСФ.Записать();
            Исключение
                Сообщить("Не удалось записать Счет-фактуру для документа №"+НомерДокОсн
                + " от " + Формат(ДатаДокОсн,"ДЛФ=Д") + ", "+ОписаниеОшибки(),СтатусСообщения.Важное);
            КонецПопытки;
           
        КонецЕсли;    
       
    КонецЕсли;


Однако при этом открывается форма Счет-фактуры. Соответственно за период на экран выводится куча обновляемых форм счет-фактур.

Как вырубить открытие формы?
1 KUBIK
 
09.08.12
16:41
Сории БП 2.0.38.6
2 JustBeFree
 
09.08.12
16:47
(1) ДокСФ.Заполнить(ДокОсн);// вот после этого открываются формы счет-фактуры!!!!

Посмотри процедуру Заполнить() в модуле объекта Счета-фактуры. Наверняка в ней форма и открывается.
3 KUBIK
 
09.08.12
16:48
(2) Посмотрел отладчиком - именно так и есть. Может можно принудительно ее как-нибудь закрыть, не влезая в МО?
4 KUBIK
 
09.08.12
16:50
(3) причем форма открывается только если объект уже есть в БД
5 JustBeFree
 
09.08.12
16:50
(3) Если ссылка на форму доступна в обработке, то можно. Но думаю, что вряд ли.
Проще вытащить процедуру Заполнить() в обработку и удалить все ненужное.
6 KUBIK
 
09.08.12
16:51
(5) видимо так и придется... а там много букв :)))))
7 JustBeFree
 
09.08.12
16:52
(6) Ага. Имей ввиду, что вместе с процедурой Заполнить() придется перетащить еще с десяток процедур, но на их допиливание уйдет минут 15-20.
8 KUBIK
 
09.08.12
16:53
(7) Спасибо! Буду скопипастить... :((