СКД в 1С – это достаточно мощный инструмент для создания отчетов. Чаще всего отчеты на СКД достаточно сложные с несколькими уровнями группировок. СКД позволяет относительно быстро строить и менять такие отчеты. Но как часто бывает – нет ничего идеального. В СКД также есть свои недочеты и странности, которые порой сложно объяснить. Один из таких – невозможность открыть отчет со свернутыми группировками. Конечно, раз вы читаете эту статью, значит это возможно, но все же… Почему не сделать было это простой настройкой “свернуть группировки при открытии”? Возможно, многие и не согласятся с такой претензией, но как по мне этой настройки порой очень не хватает. Могу предположить, что я ее просто не нашел, но даже если бы это было так, то зачем “закапывать” ее так далеко? Если что, речь идет про стандартное окно настроек Схемы Компоновки Данных. Ладно, это было немного лирики, вернемся все таки к решению.
Вначале объясню на примере, почему может понадобиться свернуть группировки при компоновке отчета. Допустим, нам необходимо вывести простой отчет – всю номенклатуру в разрезе статей затрат. Номенклатуры может быть тысячи, а то и десятки тысяч позиций. Я хочу видеть только статьи затрат, а которые нужно уже разверну. Да, можно легко свернуть группировки через меню или комбинацией клавиш, но это все лишние движения.
Было бы хорошо, чтобы отчет выглядел не вот так:
А сразу вот так:
Итак, для достижения такого результата придется писать код. Идем в модуль объекта отчета. Далее в выпадающем списке процедур и функций модуля находим и инициализируем процедуру ПриКомпоновкиРезультата().
В этой процедуре нам необходимо прописать код компоновки отчета, а последней строкой указать уровень группировки = 0. То есть вам останется просто вставить указанный ниже код в свою процедуру и радоваться красивому результату.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки() ;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, ИСТИНА);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);
КонецПроцедуры
Еще статьи по СКД: