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