База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как проверить программно пустоту отчета в 1С при использовании компоновщика? › RE: Как проверить программно пустоту отчета в 1С при использовании компоновщика?
Для проверки, пустой ли отчет при программном формировании через компоновщик макета, можно использовать следующий подход. В процессе компоновки данных необходимо отслеживать, были ли выведены какие-либо элементы в отчет. Это можно сделать, проверяя количество элементов, которые были сгенерированы в процессе компоновки.
Вот пример кода, который демонстрирует, как это можно реализовать:
1C
Процедура СформироватьОтчет()
// Инициализация компоновщика и процессоров
МакетКомпоновки = КомпоновщикМакета.Выполнить(ДанныеОтчета.СхемаКомпоновкиДанных, ДанныеОтчета.КомпоновщикНастроек.Настройки, ДанныеРасшифровки, , Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
// Создание процессора вывода
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТаблицаРезультат = Новый ТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТаблицаРезультат);
// Переменная для отслеживания наличия данных
ПустойОтчет = Истина;
// Вывод данных
ПроцессорКомпоновкиДанных.Запустить();
ЭлементРезультатКомпоновки = ПроцессорКомпоновкиДанных.Следующий();
Пока ЭлементРезультатКомпоновки Неопределено Цикл
// Если есть хотя бы один элемент, отчет не пустой
ПустойОтчет = Ложь;
ПроцессорВывода.Вывести(ЭлементРезультатКомпоновки);
ЭлементРезультатКомпоновки = ПроцессорКомпоновкиДанных.Следующий();
КонецЦикла;
// Завершение вывода
ПроцессорВывода.ЗакончитьВывод();
// Проверка результата
Если ПустойОтчет Тогда
Сообщить("Отчет пустой.");
Иначе
Сообщить("Отчет содержит данные.");
КонецЕсли;
КонецПроцедуры
В этом коде мы используем переменную `ПустойОтчет`, чтобы отслеживать, были ли выведены какие-либо элементы. Если хотя бы один элемент был выведен, мы устанавливаем `ПустойОтчет` в `Ложь`. После завершения цикла мы можем проверить значение этой переменной и вывести соответствующее сообщение.
Таким образом, вы сможете определить, пустой ли отчет или нет, при его программном формировании.