Выводит на печать 2 документа вместо одного.
Доброго времени суток. Подскажите пожалуйста почему когда нажимаю "Печать" ВПФ в форме документа КА 2.0, то выводится 2 идентичные печати. Но когда нажимаю "Печать" где форма списка документов, то выводит 1 печать, как и должно быть. Проверял в отладке, код формирует 1 Табличный документ, процедура формирования печати тоже одна, процедура "Печать" так же срабатывает 1 раз. Может ошибка в запросе или циклах заполнения Табличного документа, не могу понять.
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыПечати = Новый Структура;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Реестр") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"Реестр", НСтр("ru = 'Реестр почтовых отправлений'"),
СформироватьПечатнуюФормуРеестра(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуРеестра(МассивОбъектов, ОбъектыПечати, ПараметрыПечати = Неопределено)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеестрПочтовыхОтправлений";
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.АвтоМасштаб = Истина;
ОрганизацияАЙТАТ = Справочники.Организации.НайтиПоРеквизиту("ИНН", "1650129028");
Макет = ПолучитьМакет("Реестр");
// Получаем области макета
ОбластьШапкаЗакПисьма = Макет.ПолучитьОбласть("ШапкаЗакПисьма");
ОбластьШапкаНЕЗакПисьма = Макет.ПолучитьОбласть("ШапкаНЕЗакПисьма");
ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
ОбластьШапкаСтроки = Макет.ПолучитьОбласть("ШапкаСтроки");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ай_РеестрПочтовыхОтправленийДокументы.НомерСтроки КАК НомерСтроки,
| ай_РеестрПочтовыхОтправленийДокументы.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное,
| ай_РеестрПочтовыхОтправленийДокументы.Описание КАК Описание,
| ай_РеестрПочтовыхОтправленийДокументы.Заказное КАК Заказное,
| ЕСТЬNULL(ай_РеестрПочтовыхОтправленийДокументы.Документ.Организация.НаименованиеПолное, """") КАК ОрганизацияНаименованиеПолное,
| ай_РеестрПочтовыхОтправленийДокументы.Документ.Организация.ИНН КАК ИННОрг,
| ай_РеестрПочтовыхОтправленийДокументы.Ссылка.Дата КАК Дата,
| ай_РеестрПочтовыхОтправленийДокументы.Документ.Организация КАК Организация,
| ай_РеестрПочтовыхОтправленийДокументы.Контрагент КАК Контрагент
|ИЗ
| Документ.ай_РеестрПочтовыхОтправлений.Документы КАК ай_РеестрПочтовыхОтправленийДокументы
|ГДЕ
| ай_РеестрПочтовыхОтправленийДокументы.Ссылка В(&МассивОбъектов)
|ИТОГИ
| МАКСИМУМ(Дата)
|ПО
| Заказное,
| Организация";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаЗаказное = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаЗаказное.Следующий() Цикл
ВыборкаОрганизация = ВыборкаЗаказное.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаОрганизация.Следующий() Цикл
ВыборкаДетальныеЗаписи = ВыборкаОрганизация.Выбрать();
Если ВыборкаЗаказное.Заказное Тогда
ТабличныйДокумент.Вывести(ОбластьШапкаЗакПисьма);
Иначе
ТабличныйДокумент.Вывести(ОбластьШапкаНЕЗакПисьма);
КонецЕсли;
// Заполняем и выводим таблицу
НомерСтроки = 1;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Заполняем и выводим Реквизиты и шапку таблицы
Если НомерСтроки = 1 Тогда
Если Не ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ОрганизацияНаименованиеПолное) Тогда
ОбластьРеквизиты.Параметры.Организация = ОрганизацияАЙТАТ.НаименованиеПолное;
ОбластьРеквизиты.Параметры.ИННОрг = ОрганизацияАЙТАТ.ИНН;
Иначе
ОбластьРеквизиты.Параметры.Организация = ВыборкаОрганизация.ОрганизацияНаименованиеПолное;
ОбластьРеквизиты.Параметры.ИННОрг = ВыборкаОрганизация.ИННОрг;
КонецЕсли;
ОбластьРеквизиты.Параметры.Дата = Формат(ВыборкаДетальныеЗаписи.Дата, "ДЛФ=Д");
ТабличныйДокумент.Вывести(ОбластьРеквизиты);
ТабличныйДокумент.Вывести(ОбластьШапкаСтроки);
КонецЕсли;
ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
ОбластьСтрока.Параметры.КонтрагентНаименованиеПолное = ВыборкаДетальныеЗаписи.КонтрагентНаименованиеПолное;
ОбластьСтрока.Параметры.Описание = ВыборкаДетальныеЗаписи.Описание;
ПочтовыйАдресКонтрагента = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыборкаДетальныеЗаписи.Контрагент,
Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента, ВыборкаДетальныеЗаписи.Дата, Истина);
ОбластьСтрока.Параметры.ПочтовыйАдрес = ПочтовыйАдресКонтрагента;
ТабличныйДокумент.Вывести(ОбластьСтрока);
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Поставил кол-во экземпляров 1, то есть возвращает 1 табличный документ, но так же открывает 2 печати документа. Может не так сформулировал ошибку. При нажатии на Печать в Форме документа выходит 2 печати (скрин1). При этом если я нажму печать вне формы, то выводится 1 печать, как и должно. Еще я заметил что в модуля формы документа присутствуют такие вот процедуры (скрин2). Может с этим связано? Забыл упомянуть что документ не типовой.
Прикрепленные файлы:


(7)
Может не так сформулировал ошибку.
Конечно не так!!! Ты сказал, что DSDJLBNCZ два раза, а не ПОКАЗЫВАЕТ на форме! Это две большие разницы!
Забыл упомянуть что документ не типовой.
Что еще забыл, признавайся! Может и сама форма для показа печати нетиповая???
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот