|   |   | 
| 
 | БП 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) Спасибо! Буду скопипастить... :((     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |