Как в скд вывести свернутые группировки
Перейти к содержимому

Как в скд вывести свернутые группировки

  • автор:

Как выводить отчет СКД со свернутыми группировками?

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, ДанныеРасшифровки);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ЭлементыФормы.Результат.ФиксацияСлева = 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

Еще в этой же категории

Ключевые слова и Изображения

Слова упорядочены по частоте использования в тексте
Изображения

Дополню. Если свернуть приведенным в статье кодом, то группировки свернутся, но при раскрытии, если есть ещё нижележащие группировки, они также будут раскрыты. Предлагаю доработать:

КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;

Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *