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

Как проверить прогр...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

при программном формировании отчета через
МакетКомпоновки = КомпоновщикМакета.Выполнить(ДанныеОтчета.СхемаКомпоновкиДанных, ДанныеОтчета.КомпоновщикНастроек.Настройки,ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТаблицаРезультат = Новый ТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТаблицаРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Как проверить, пустой он или нет?



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

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

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



   
ОтветитьЦитата