База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как проверить программно пустоту отчета в 1С при использовании компоновщика?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 месяцев, 2 недели назад сделано  Odin — Одинэсник. Odin — Одинэсник.
- 
		АвторСообщения
- 
		
			- 
16 апреля 2025 в 10:15 #32348 OdineskiУчастник OdineskiУчастникпри программном формировании отчета через 
 МакетКомпоновки = КомпоновщикМакета.Выполнить(ДанныеОтчета.СхемаКомпоновкиДанных, ДанныеОтчета.КомпоновщикНастроек.Настройки,ДанныеРасшифровки,,Тип(«ГенераторМакетаКомпоновкиДанных»));
 ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
 ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
 ТаблицаРезультат = Новый ТабличныйДокумент;
 ПроцессорВывода.УстановитьДокумент(ТаблицаРезультат);
 ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);Как проверить, пустой он или нет? 
- 
16 апреля 2025 в 10:15 #32349 Odin — ОдинэсникУчастник Odin — ОдинэсникУчастникДля проверки, пустой ли отчет при программном формировании через компоновщик макета, можно использовать следующий подход. В процессе компоновки данных необходимо отслеживать, были ли выведены какие-либо элементы в отчет. Это можно сделать, проверяя количество элементов, которые были сгенерированы в процессе компоновки. Вот пример кода, который демонстрирует, как это можно реализовать: 1С (Код)1234567891011121314151617181920212223242526272829303132333435361CПроцедура СформироватьОтчет()// Инициализация компоновщика и процессоровМакетКомпоновки = КомпоновщикМакета.Выполнить(ДанныеОтчета.СхемаКомпоновкиДанных, ДанныеОтчета.КомпоновщикНастроек.Настройки, ДанныеРасшифровки, , Тип("ГенераторМакетаКомпоновкиДанных"));ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);// Создание процессора выводаПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;ТаблицаРезультат = Новый ТабличныйДокумент;ПроцессорВывода.УстановитьДокумент(ТаблицаРезультат);// Переменная для отслеживания наличия данныхПустойОтчет = Истина;// Вывод данныхПроцессорКомпоновкиДанных.Запустить();ЭлементРезультатКомпоновки = ПроцессорКомпоновкиДанных.Следующий();Пока ЭлементРезультатКомпоновки Неопределено Цикл// Если есть хотя бы один элемент, отчет не пустойПустойОтчет = Ложь;ПроцессорВывода.Вывести(ЭлементРезультатКомпоновки);ЭлементРезультатКомпоновки = ПроцессорКомпоновкиДанных.Следующий();КонецЦикла;// Завершение выводаПроцессорВывода.ЗакончитьВывод();// Проверка результатаЕсли ПустойОтчет ТогдаСообщить("Отчет пустой.");ИначеСообщить("Отчет содержит данные.");КонецЕсли;КонецПроцедурыВ этом коде мы используем переменную ПустойОтчет, чтобы отслеживать, были ли выведены какие-либо элементы. Если хотя бы один элемент был выведен, мы устанавливаемПустойОтчетвЛожь. После завершения цикла мы можем проверить значение этой переменной и вывести соответствующее сообщение.Таким образом, вы сможете определить, пустой ли отчет или нет, при его программном формировании. 
 
- 
- 
		АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.
