Top.Mail.Ru

Группировка в 1С СКД

Предисловие

Одним из базовых функционалов 1С СКД является возможность определения структуры отчета. Ни один отчет в СКД не обходится без настройки группировок. Поэтому в этой статье мы разберем, как производится такая настройка.

Итак, после того как вы определили наборы данных, по которым будет построен отчет, вы можете приступать к настройке структуры отчета. До этого этапа обычно также производят настройку ресурсов, но такая последовательность не является обязательной.

Определение группировок производится на закладке «Настройка» схемы компоновки данных в верхнем правом окне.

Рисунок 1

Детальные записи

Начнем с простого. Если нам нужно вывести все строки набора в отчет, добавляем группировку «Детальные записи». Добавление новой группировки производится через правую клавишу мыши (ПКМ) на уровне отчета или через клавишу «Ins». Чтобы добавить группировку «Детальные записи», в открывшемся диалоге мы не указываем поле.

Далее в области «Настройки текущей группировки» (см. рисунок 1) мы можем на закладке «Выбранные поля» просто перенести все доступные поля в список выбранных. При этом мы указали настройки (список полей) для всего отчета. В нашем случае весь отчет это одна группировка, поэтому нет разницы — задаем мы настройки для всего отчета или для группировки.

Итоговый отчет будет выглядеть как таблица с колонками выбранных полей и со всеми строками из набора.

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

Группировка по полю

Дальше у нас может возникнуть задача — добавить итоговые записи в отчет по какому-то полю. В этом случае при добавлении новой группировки мы должны указать это поле. Например, в нашем случае мы можем добавить группировку по контрагенту.

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

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

Теперь в наш отчет попали ресурсы, но не попали прочие поля. Об этом поговорим позже.

Группировка иерархическая

В 1С СКД есть возможность добавления итоговой записи для иерархических объектов – справочников, планов видов характеристик. В этом случае кроме итоговой записи по конечному элементу в отчет добавляется итоговая запись по всем родителям, содержащим этот элемент.

Например, сделаем вариант отчета с группировкой по номенклатуре, включая итоги по группам (папкам).

Если выбрать вариант «Иерархия» добавляются итоги по родителям и элементам, если «Только иерархия», то итоги только по родителям. Выберем вариант «Иерархия» и посмотрим, что получится:

В отчет кроме итоговых записей по элементам добавились записи по родительским элементам.

Группировка по нескольким полям

Группировку можно сделать не по одному полю, а по нескольким. Например, в случае нашего отчета сделаем группировку по периоду и включим для этого в группировку два поля – начало периода и конец периода. Добавим группировку, указав поле начало периода (или не указывая ничего), затем кликнем по группировке, в открывшемся списке определим следующие поля:

По смыслу такая группировка аналогична конструкции «СГРУППИРОВАТЬ ПО НачалоПериода, КонецПериода» в языке запросов.

Получим вот такой отчет

Подчиненные группировки

Теперь вернемся к разделу «Группировка по одному полю». В принципе на предыдущем примере мы это тоже можем реализовать – в отчет у нас не попали прочие поля. Как уже было озвучено ранее, потому что в группировку попадают только значения полей группировки и ресурсы.

В 1С СКД имеется возможность создавать подчиненные группировки. Как мы добавляли первую группировку для всего отчета, так мы можем добавить любую подчиненную группировку для другой (родительской группировки).

Добавим в предыдущий вариант отчета группировку детальных записей:

И добавим сразу себестоимость в ресурсы. Получится такой отчет:

Действие настроек родительской группировки на подчиненные

При использовании группировок нужно учитывать важную особенность работы СКД – наследование настроек подчиненными группировками. Все группировки наследуют все настройки заданные на уровне отчета. Все подчиненные группировки наследуют список выбранных полей и сортировку от родительской группировки, если в списке указан элемент «Авто». Условное оформление, отбор, другие настройки не наследуются от родительской группировоки.

Для подчиненных группировок мы можем определить свои настройки. Например, определим для детальных записей в последнем варианте свой список полей. Допустим в детальных записях нам нужно к общим полям добавить код номенклатуры:

Для этого мы в поле «Настройки» выбираем группировку «Детальные записи». В выбранных полях оставляем «Авто» — это значит, что мы наследуем в группировке поля из родительских группировок. И добавляем поле код. Получаем (в других настройках нужно указать расположение реквизитов – «Отдельно»):

Мы можем переопределить полностью родительские поля и задать свой список полей:

Таблица

До сих пор мы рассматривали с вами «одномерные» отчеты, когда информация из набора разворачивалась в одном направлении – вертикальном. В 1С СКД имеется возможность выводить информацию в двух направлениях одновременно – в вертикальном и горизонтальном в виде таблицы. Для этого используется элемент структуры «Таблица»:

При добавлении таблицы в настройки у нее доступны два измерения, в которые можно добавлять группировки – «Строки» для вертикального разворота, «Колонки» — для горизонтального разворота:

Используя набор данных с простым запросом:

Построим отчет, в котором в строках разместим группировку по контрагенту и номенклатуре, а в колонках по году и месяцу:

В отчете у нас определены ресурсы, которые мы добавили в настройки для отчета в выбранные поля:

Получили вот такой отчет:

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

Собственные итоги

При использовании таблицы в структуре отчета на СКД часто возникает необходимость добавить дополнительные колонки со своим составом полей или реализовать итог по горизонтали с другим составом ресурсов. Тоже самое касается и строк – чаще бывает необходимо реализовать собственные итоги в строках.

Рассмотрим на практическом примере. Пусть у нас есть такой (немного странный отчет):

За каждый месяц мы выводим количество поступивших и проданных товаров. В общем итоге по горизонтали (и только в нем) нам нужно вывести процентное отношение расхода к приходу. Первой колонкой нужно вывести остаток по номенклатуре. В общем итоге за период нужно вывести максимальный приход и максимальный расход.

Итак, первоначальная настройка отчета у нас совсем простая:

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

Начнем с добавления процента в общем итоге. Для этого отключим вывод общего итога по горизонтали на закладке «Другие настройки»:

Далее нам нужно добавить группировку в колонки, в которой мы разместим наши итоги. Это может быть или группировка детальных записей или группировка по вычисляемому полю. Первое чуть проще, но итоговый результат нас не совсем устроит – нет заголовка у итога (это можно доработать с помощью макета), выберем второй вариант. Для этого добавим вычисляемое поле для общего итога «Итого», добавим вычисляемое поле «Процент» для расчета процента:

Добавим ресурс для общего итога с такой формулой:

Добавим колонку в настройки, добавим наши поля в выбранные ТОЛЬКО для группировки «Итого»:

Получим отчет в нужном виде:

Теперь добавим колонку остатка после колонки номенклатура. Для этого добавим второй набор данных (остатки), свяжем его с основным набором:

Теперь мы реализуем колонку через детальные записи, чтобы увидеть различие с группировкой по вычисляемому полю. Это не будет окончательное решение, но в рамках данной статьи будет достаточным:

Получим вот такую форму отчета:

И последняя задача – поменять общий вертикальный итог. Для нашей задачи такое требование можно выполнить несколько проще — без добавления группировки с собственным итогом, потому что в нашем случае не меняется макет общего итога, а меняются только значения ресурсов. Если нужно поменять макет ресурсов (состав ресурсов), то у нас есть ролик, в котором можно посмотреть, как делаются собственные итоги в строках.

Мы же решим эту часть задачи по другому, с помощью опции «Рассчитывать по» на закладке «Ресурсы»:

Процент для общего итога по строкам в общем итоге по горизонтали считать не будем. Получаем вот такой отчет:

Здесь важно заметить, что в исходном наборе данные по номенклатуре и месяцу должны быть сгруппированы, чтобы не было повторений для одной номенклатуры. Если такие повторения будут, то функция «Максимум» будет работать неверно. В этом случае выражение для ресурса в общем итоге будет более сложное, но это тема для другой статьи.

Вывод группировок в пользовательские настройки

Кроме изменения структуры отчета через варианты отчета в СКД имеется возможность изменять группировки отчета в режиме пользовательских настроек. Это может пригодится если пользователь пользуется одним и тем же вариантом отчета, но может часто изменять группировки отчета по своему желанию.

Для этого в СКД есть возможность добавить настройку группировок в пользовательские настройки:

Для отчета в целом

Для таблицы есть возможность управлять группировками строк и колонок:

Для выбранной группировки можно управлять вложенными (подчиненными) группировками:

В режиме предприятия это выглядит примерно так:

Группировки добавляются к заданным в варианте отчета. Можно не устанавливать никакие группировки в варианте отчета и тогда пользователь может полностью управлять структурой отчета. Надо конечно заметить, что в этом режиме нельзя добавить таблицу или диаграмму – только обычную группировку. Причем нельзя добавить составную группировку. При добавлении группировки как показано на рисунке устанавливается дополнительно две родительских группировки, а не одна составная:

Программная работа с группировками

При создании отчета на СКД имеется возможность создать отчет полностью программно. При этом можно таким образом создать как схему компоновки, так и заполнить настройки компоновщика настроек. В обоих случаях мы работаем с объектом «НастройкиКомпоновкиДанных».

Пример программного создания группировки

// Добавим новую группировку в структуру отчета.

Группировка = Настройки.Структура.Добавить(Тип(«ГруппировкаКомпоновкиДанных»));

// Укажем, по каким полям нужно группировать.

ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип(«ПолеГруппировкиКомпоновкиДанных»));

ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(«Номенклатура»);

// Укажем тип иерархии.

ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;

Более подробно можно изучить программную работу с настройками (не только группировок) можно по ссылкам указанным в материалах для подготовки.

Материалы для подготовки

Особенности использования детальных записей

Практический курс по СКД

Настройка полей группировки в пользовательских настройках

Как выдавать в итоги по строкам таблицы ресурсы, отличные от ресурсов в колонках таблицы

Создание настроек компоновки данных из встроенного языка

Делаем отчет на СКД с собственными итогами

Пример универсальной функции для создания схемы компоновки данных

Comments

So empty here ... leave a comment!

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

Sidebar