Выводит на печать 2 документа вместо одного.

1. IYDKMIGTHTKY 29.01.25 19:44 Сейчас в теме
Доброго времени суток. Подскажите пожалуйста почему когда нажимаю "Печать" ВПФ в форме документа КА 2.0, то выводится 2 идентичные печати. Но когда нажимаю "Печать" где форма списка документов, то выводит 1 печать, как и должно быть. Проверял в отладке, код формирует 1 Табличный документ, процедура формирования печати тоже одна, процедура "Печать" так же срабатывает 1 раз. Может ошибка в запросе или циклах заполнения Табличного документа, не могу понять.

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт 
	
	ПараметрыПечати = Новый Структура;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Реестр") Тогда
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, 
		"Реестр", НСтр("ru = 'Реестр почтовых отправлений'"),
		СформироватьПечатнуюФормуРеестра(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
	КонецЕсли;
	
	
	
КонецПроцедуры	

Функция СформироватьПечатнуюФормуРеестра(МассивОбъектов, ОбъектыПечати, ПараметрыПечати = Неопределено)
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеестрПочтовыхОтправлений";
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; 
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	
	ОрганизацияАЙТАТ = Справочники.Организации.НайтиПоРеквизиту("ИНН", "1650129028");
	
	Макет = ПолучитьМакет("Реестр"); 
	
	// Получаем области макета	
	
	ОбластьШапкаЗакПисьма = Макет.ПолучитьОбласть("ШапкаЗакПисьма");  
	ОбластьШапкаНЕЗакПисьма = Макет.ПолучитьОбласть("ШапкаНЕЗакПисьма");				
	ОбластьРеквизиты	= Макет.ПолучитьОбласть("Реквизиты");
	ОбластьШапкаСтроки = Макет.ПолучитьОбласть("ШапкаСтроки");
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ай_РеестрПочтовыхОтправленийДокументы.НомерСтроки КАК НомерСтроки,
	|	ай_РеестрПочтовыхОтправленийДокументы.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное,
	|	ай_РеестрПочтовыхОтправленийДокументы.Описание КАК Описание,
	|	ай_РеестрПочтовыхОтправленийДокументы.Заказное КАК Заказное,
	|	ЕСТЬNULL(ай_РеестрПочтовыхОтправленийДокументы.Документ.Организация.НаименованиеПолное, """") КАК ОрганизацияНаименованиеПолное,
	|	ай_РеестрПочтовыхОтправленийДокументы.Документ.Организация.ИНН КАК ИННОрг,
	|	ай_РеестрПочтовыхОтправленийДокументы.Ссылка.Дата КАК Дата,
	|	ай_РеестрПочтовыхОтправленийДокументы.Документ.Организация КАК Организация,
	|	ай_РеестрПочтовыхОтправленийДокументы.Контрагент КАК Контрагент
	|ИЗ
	|	Документ.ай_РеестрПочтовыхОтправлений.Документы КАК ай_РеестрПочтовыхОтправленийДокументы
	|ГДЕ
	|	ай_РеестрПочтовыхОтправленийДокументы.Ссылка В(&МассивОбъектов)
	|ИТОГИ
	|	МАКСИМУМ(Дата)
	|ПО
	|	Заказное,
	|	Организация";
	
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаЗаказное = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока ВыборкаЗаказное.Следующий() Цикл
		
		
		ВыборкаОрганизация = ВыборкаЗаказное.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Пока ВыборкаОрганизация.Следующий() Цикл
			
			ВыборкаДетальныеЗаписи = ВыборкаОрганизация.Выбрать();
			
			Если ВыборкаЗаказное.Заказное Тогда
				ТабличныйДокумент.Вывести(ОбластьШапкаЗакПисьма);	
			Иначе
				ТабличныйДокумент.Вывести(ОбластьШапкаНЕЗакПисьма);	
			КонецЕсли;      
			
			
			
			
			// Заполняем и выводим таблицу 			
			НомерСтроки = 1;
			
			Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
				
				// Заполняем и выводим Реквизиты и шапку таблицы
				
				Если НомерСтроки = 1 Тогда
					Если Не ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ОрганизацияНаименованиеПолное) Тогда
						ОбластьРеквизиты.Параметры.Организация = ОрганизацияАЙТАТ.НаименованиеПолное;
						ОбластьРеквизиты.Параметры.ИННОрг = ОрганизацияАЙТАТ.ИНН; 
					Иначе 
						ОбластьРеквизиты.Параметры.Организация = ВыборкаОрганизация.ОрганизацияНаименованиеПолное;
						ОбластьРеквизиты.Параметры.ИННОрг = ВыборкаОрганизация.ИННОрг; 
					КонецЕсли;
					
					ОбластьРеквизиты.Параметры.Дата = Формат(ВыборкаДетальныеЗаписи.Дата, "ДЛФ=Д");
					
					ТабличныйДокумент.Вывести(ОбластьРеквизиты);
					ТабличныйДокумент.Вывести(ОбластьШапкаСтроки);
					
				КонецЕсли;
				
				
				ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
				ОбластьСтрока.Параметры.КонтрагентНаименованиеПолное = ВыборкаДетальныеЗаписи.КонтрагентНаименованиеПолное;
				ОбластьСтрока.Параметры.Описание = ВыборкаДетальныеЗаписи.Описание;
				
				ПочтовыйАдресКонтрагента = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыборкаДетальныеЗаписи.Контрагент,
				Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента, ВыборкаДетальныеЗаписи.Дата, Истина);
				
				ОбластьСтрока.Параметры.ПочтовыйАдрес = ПочтовыйАдресКонтрагента;
				
				ТабличныйДокумент.Вывести(ОбластьСтрока);	
				
				НомерСтроки = НомерСтроки + 1;
				
			КонецЦикла;
			
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			
		КонецЦикла;
	КонецЦикла;
	
	
	
	
	Возврат ТабличныйДокумент;
КонецФункции
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. KirillHome 5 29.01.25 21:29 Сейчас в теме
1. Что в МассивОбъектов при печати из формы документа? Ну хотя бы - сколько там элементов?
2. Я бы в запросе избавился от итогов.
3. IYDKMIGTHTKY 29.01.25 21:37 Сейчас в теме
(2) Итоги к сожалению нужны для правильного формирования печати, условие такое.
В массиве 1 элемент, проверял через МассивОбъектов[1] - выводило ошибку что выходит за границы индекса
4. user2107191 29.01.25 21:53 Сейчас в теме
Свойство ТабДока "КоличествоЭкземпляров"
5. IYDKMIGTHTKY 29.01.25 21:59 Сейчас в теме
(4) Указать в табличный документ КоличествоЭкземпляров = 1?
6. user2107191 29.01.25 22:09 Сейчас в теме
(5) Хочешь - устанавливай. А хочешь - просто сравни.
7. IYDKMIGTHTKY 30.01.25 08:20 Сейчас в теме
Поставил кол-во экземпляров 1, то есть возвращает 1 табличный документ, но так же открывает 2 печати документа. Может не так сформулировал ошибку. При нажатии на Печать в Форме документа выходит 2 печати (скрин1). При этом если я нажму печать вне формы, то выводится 1 печать, как и должно. Еще я заметил что в модуля формы документа присутствуют такие вот процедуры (скрин2). Может с этим связано? Забыл упомянуть что документ не типовой.
Прикрепленные файлы:
8. user2107191 30.01.25 08:23 Сейчас в теме
(7)
Может не так сформулировал ошибку.
Конечно не так!!! Ты сказал, что DSDJLBNCZ два раза, а не ПОКАЗЫВАЕТ на форме! Это две большие разницы!
Забыл упомянуть что документ не типовой.
Что еще забыл, признавайся! Может и сама форма для показа печати нетиповая???
9. IYDKMIGTHTKY 30.01.25 09:24 Сейчас в теме
(8)
Конечно не так!!! Ты сказал, что DSDJLBNCZ два раза, а не ПОКАЗЫВАЕТ на форме! Это две большие разницы!

Да, за это извиняюсь.

(8)
Что еще забыл, признавайся! Может и сама форма для показа печати нетиповая???

Надеюсь больше ничего не забыл
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот