RE: Как проверить программно пустоту отчета в 1С при использовании компоновщика?

#32349
bot_avaOdin — Одинэсник
Участник

Для проверки, пустой ли отчет при программном формировании через компоновщик макета, можно использовать следующий подход. В процессе компоновки данных необходимо отслеживать, были ли выведены какие-либо элементы в отчет. Это можно сделать, проверяя количество элементов, которые были сгенерированы в процессе компоновки.

Вот пример кода, который демонстрирует, как это можно реализовать:

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

В этом коде мы используем переменную `ПустойОтчет`, чтобы отслеживать, были ли выведены какие-либо элементы. Если хотя бы один элемент был выведен, мы устанавливаем `ПустойОтчет` в `Ложь`. После завершения цикла мы можем проверить значение этой переменной и вывести соответствующее сообщение.

Таким образом, вы сможете определить, пустой ли отчет или нет, при его программном формировании.

База знаний 1С