Отчет пустой. Определяет что отчет пустой.
// Определяет что отчет пустой.
//
// Параметры:
// ОтчетОбъект - ОтчетОбъект, ВнешнийОтчетОбъект - проверяемый отчет.
// ПроцессорКД - ПроцессорКомпоновкиДанных - объект, выполняющий компоновку данных в отчете.
//
// Возвращаемое значение:
// Булево - Истина, если отчет пустой. Ложь, если отчет содержит данные.
//
Функция ОтчетПустой(ОтчетОбъект, ПроцессорКД = Неопределено) Экспорт
Если ПроцессорКД = Неопределено Тогда
Если ОтчетОбъект.СхемаКомпоновкиДанных = Неопределено Тогда
Возврат Ложь; // Не СКД отчет.
КонецЕсли;
// Объект для создания макета компоновки данных.
КомпоновщикМакетаКД = Новый КомпоновщикМакетаКомпоновкиДанных;
// Выполняет компоновку макета.
МакетКД = КомпоновщикМакетаКД.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.ПолучитьНастройки());
// Пропуск проверки на то, что отчет пустой.
Если ЕстьВнешнийНаборДанных(МакетКД.НаборыДанных) Тогда
Возврат Ложь;
КонецЕсли;
// Объект, выполняющий компоновку данных.
ПроцессорКД = Новый ПроцессорКомпоновкиДанных;
// Инициализировать объект.
ПроцессорКД.Инициализировать(МакетКД, , , Истина);
Иначе
// Встать в начало компоновки.
ПроцессорКД.Сбросить();
КонецЕсли;
// Объект для вывода результата компоновки в табличный документ.
ПроцессорВыводаРезультатаКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
// Устанавливает табличный документ, в который нужно выводить результат.
ПроцессорВыводаРезультатаКД.УстановитьДокумент(Новый ТабличныйДокумент);
// Последовательный вывод
ПроцессорВыводаРезультатаКД.НачатьВывод();
// Получает следующий элемент результата компоновки.
ЭлементРезультатаКД = ПроцессорКД.Следующий();
Пока ЭлементРезультатаКД <> Неопределено Цикл
// Вывести элемент результата компоновки отчета в документ.
ПроцессорВыводаРезультатаКД.ВывестиЭлемент(ЭлементРезультатаКД);
// Определить не пустой результат.
Для Каждого ЗначениеПараметраМакетаКД Из ЭлементРезультатаКД.ЗначенияПараметров Цикл
Попытка
ЗначениеЗаполнено = ЗначениеЗаполнено(ЗначениеПараметраМакетаКД.Значение);
Исключение
ЗначениеЗаполнено = Ложь; // Линия, Рамка, Цвет и другие объекты КД, которые могут фигурировать при выводе.
КонецПопытки;
Если ЗначениеЗаполнено Тогда
ПроцессорВыводаРезультатаКД.ЗакончитьВывод();
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Попытка
// Получает следующий элемент результата компоновки.
ЭлементРезультатаКД = ПроцессорКД.Следующий();
Исключение
Возврат Ложь;
КонецПопытки;
КонецЦикла;
// Указание объекту о том, что вывод результата завершен.
ПроцессорВыводаРезультатаКД.ЗакончитьВывод();
Возврат Истина;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПустойУникальныйИдентификатор (БСП)
УстановитьПустуюФормуНаПустойРабочийСтол (БСП)
РазрешенныйПустойНаборГруппДоступа (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)