Как выводить отчет СКД со свернутыми группировками?
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ЭлементыФормы.Результат.ФиксацияСлева = 1;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ЭлементыФормы.Результат.Показать();
СКД: вывод некоторых группировок свернутыми
Задача: Есть внешний отчет для 1С Бухгалтерия для Украины 1.2 по задолженности контрагентов с 3-мя группировками: контрагент, договор и документ. Необходимо группировку по договорам по которым нет задолженности выводить в свернутом виде.
В сети по поводу группировок попадется совет использовать метод ПоказатьУровеньГруппировокСтрок(<Уровень>), который нам не подходит. Он сворачивает все группировки определенного уровня, а нам необходимо сворачивать по условию.
После обдумывания задачи имеем следующий алгоритм:
1. Создаем макеты группировок
Добавлять в них что-либо не обязательно.
2. Обрабатываем макет компоновки
При выводе отчета скомпонованный макет компоновки передаем в процедуру ПередВыводомОтчета и получаем из нее макеты группировок с помощью метода СтандартныеОтчеты.ПолучитьМакетГруппировкиПоПолюГруппировки. Полученные макеты помещаем в реквизит внешнего отчета (тут структура ДанныеОтчета).
3. Модифицируем стандартную процедуру ВывестиОтчет
Передаем поле табличного документа Результат в метод ПередВыводомЭлементаРезультата
4. Процедура ПередВыводомЭлементаРезультата
С помощью сохранненых макетов в ДанныеОтчета определяем какую именно группировку мы выводим и в зависимости от этого используем метод табличного поля НачатьГруппуСтрок(,Ложь) и ЗакончитьГруппуСтрок() . Определение долга по договору происходит через поиск параметра с выражением «Сумма(ЗадолженностьПоСрокам.ОстатокДолга)«.
Заметки по 1С:Предприятие 8.2, 8.3
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования (Linus Torvalds).
Страницы
- Главная
- Полезности
- Мои сертификаты
четверг, 22 августа 2013 г.
Свернутые группировки при выводе отчета на СКД
По умолчанию отчеты на СКД выводятся с уже развернутыми группировками. Чтобы при выводе отчета группировки были свернуты нужно добавить следующий код в модуль отчета:
Процедура ПриКомпоновкеРезультата ( ДокументРезультат , ДанныеРасшифровки , СтандартнаяОбработка )
СтандартнаяОбработка = Ложь;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных ;
Макет = КомпоновщикМакет . Выполнить ( СхемаКомпоновкиДанных , КомпоновщикНастроек . ПолучитьНастройки (), ДанныеРасшифровки );
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновки . Инициализировать ( Макет , , ДанныеРасшифровки );
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ;
ПроцессорВывода . УстановитьДокумент ( ДокументРезультат );
ПроцессорВывода . Вывести ( ПроцессорКомпоновки );
//ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2); //Уровень 3
//ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); //Уровень 2
ДокументРезультат . ПоказатьУровеньГруппировокСтрок ( 0 ); //Уровень 1
Добавить комментарий
2 комментария :
Чтобы и вложенные уровни были свернуты нужно пробежаться по ним в цикле
КонечныйУровеньГруппировки = 0;
ТекущийУровень = ДокументРезультат.КоличествоУровнейГруппировокСтрок() — 1;
Пока ТекущийУровень > КонечныйУровеньГруппировки Цикл
ДокументРезультат.ПоказатьУровеньГруппировокСтрок(ТекущийУровень);
ТекущийУровень = ТекущийУровень — 1;
КонецЦикла;
ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КонечныйУровеньГруппировки);
Как программно свернуть группировки в СКД (система компоновки данных)?
При формировании отчетов на СКД по умолчанию все группировки развернуты, но бывает что необходимо сразу после формирования показать отчет со свернутыми группировками!
Данный код в модуле отчета позволяет свернуть группировки до необходимого уровня (0,1,2. ):
Похожие FAQ
Еще в этой же категории
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
Дополню. Если свернуть приведенным в статье кодом, то группировки свернутся, но при раскрытии, если есть ещё нижележащие группировки, они также будут раскрыты. Предлагаю доработать:
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;