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

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

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

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

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

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

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

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