Группировка в 1С СКД
Contents
- 1 Предисловие
- 2 Детальные записи
- 3 Группировка по полю
- 4 Группировка иерархическая
- 5 Группировка по нескольким полям
- 6 Подчиненные группировки
- 7 Действие настроек родительской группировки на подчиненные
- 8 Таблица
- 9 Собственные итоги
- 10 Вывод группировок в пользовательские настройки
- 11 Программная работа с группировками
- 12 Материалы для подготовки
Предисловие
Одним из базовых функционалов 1С СКД является возможность определения структуры отчета. Ни один отчет в СКД не обходится без настройки группировок. Поэтому в этой статье мы разберем, как производится такая настройка.
Итак, после того как вы определили наборы данных, по которым будет построен отчет, вы можете приступать к настройке структуры отчета. До этого этапа обычно также производят настройку ресурсов, но такая последовательность не является обязательной.
Определение группировок производится на закладке «Настройка» схемы компоновки данных в верхнем правом окне.
Рисунок 1
Детальные записи
Начнем с простого. Если нам нужно вывести все строки набора в отчет, добавляем группировку «Детальные записи». Добавление новой группировки производится через правую клавишу мыши (ПКМ) на уровне отчета или через клавишу «Ins». Чтобы добавить группировку «Детальные записи», в открывшемся диалоге мы не указываем поле.
Далее в области «Настройки текущей группировки» (см. рисунок 1) мы можем на закладке «Выбранные поля» просто перенести все доступные поля в список выбранных. При этом мы указали настройки (список полей) для всего отчета. В нашем случае весь отчет это одна группировка, поэтому нет разницы — задаем мы настройки для всего отчета или для группировки.
Итоговый отчет будет выглядеть как таблица с колонками выбранных полей и со всеми строками из набора.
Такой вариант отчет бывает полезным для отладки, чтобы понять какие данные содержатся в наборе.
Группировка по полю
Дальше у нас может возникнуть задача — добавить итоговые записи в отчет по какому-то полю. В этом случае при добавлении новой группировки мы должны указать это поле. Например, в нашем случае мы можем добавить группировку по контрагенту.
Теперь, если как прежде добавим все поля в выбранные поля для нашей группировки, мы не получим ожидаемый результат
Все потому что в группировку, определяющую итоговую запись попадают только значения полей, из которых состоит эта группировка и ресурсы. Ресурсы мы не определили, поэтому они не попали в отчет. Давайте определим два ресурса
Теперь в наш отчет попали ресурсы, но не попали прочие поля. Об этом поговорим позже.
Группировка иерархическая
В 1С СКД есть возможность добавления итоговой записи для иерархических объектов – справочников, планов видов характеристик. В этом случае кроме итоговой записи по конечному элементу в отчет добавляется итоговая запись по всем родителям, содержащим этот элемент.
Например, сделаем вариант отчета с группировкой по номенклатуре, включая итоги по группам (папкам).
Если выбрать вариант «Иерархия» добавляются итоги по родителям и элементам, если «Только иерархия», то итоги только по родителям. Выберем вариант «Иерархия» и посмотрим, что получится:
В отчет кроме итоговых записей по элементам добавились записи по родительским элементам.
Группировка по нескольким полям
Группировку можно сделать не по одному полю, а по нескольким. Например, в случае нашего отчета сделаем группировку по периоду и включим для этого в группировку два поля – начало периода и конец периода. Добавим группировку, указав поле начало периода (или не указывая ничего), затем кликнем по группировке, в открывшемся списке определим следующие поля:
По смыслу такая группировка аналогична конструкции «СГРУППИРОВАТЬ ПО НачалоПериода, КонецПериода» в языке запросов.
Получим вот такой отчет
Подчиненные группировки
Теперь вернемся к разделу «Группировка по одному полю». В принципе на предыдущем примере мы это тоже можем реализовать – в отчет у нас не попали прочие поля. Как уже было озвучено ранее, потому что в группировку попадают только значения полей группировки и ресурсы.
В 1С СКД имеется возможность создавать подчиненные группировки. Как мы добавляли первую группировку для всего отчета, так мы можем добавить любую подчиненную группировку для другой (родительской группировки).
Добавим в предыдущий вариант отчета группировку детальных записей:
И добавим сразу себестоимость в ресурсы. Получится такой отчет:
Действие настроек родительской группировки на подчиненные
При использовании группировок нужно учитывать важную особенность работы СКД – наследование настроек подчиненными группировками. Все группировки наследуют все настройки заданные на уровне отчета. Все подчиненные группировки наследуют список выбранных полей и сортировку от родительской группировки, если в списке указан элемент «Авто». Условное оформление, отбор, другие настройки не наследуются от родительской группировоки.
Для подчиненных группировок мы можем определить свои настройки. Например, определим для детальных записей в последнем варианте свой список полей. Допустим в детальных записях нам нужно к общим полям добавить код номенклатуры:
Для этого мы в поле «Настройки» выбираем группировку «Детальные записи». В выбранных полях оставляем «Авто» — это значит, что мы наследуем в группировке поля из родительских группировок. И добавляем поле код. Получаем (в других настройках нужно указать расположение реквизитов – «Отдельно»):
Мы можем переопределить полностью родительские поля и задать свой список полей:
Таблица
До сих пор мы рассматривали с вами «одномерные» отчеты, когда информация из набора разворачивалась в одном направлении – вертикальном. В 1С СКД имеется возможность выводить информацию в двух направлениях одновременно – в вертикальном и горизонтальном в виде таблицы. Для этого используется элемент структуры «Таблица»:
При добавлении таблицы в настройки у нее доступны два измерения, в которые можно добавлять группировки – «Строки» для вертикального разворота, «Колонки» — для горизонтального разворота:
Используя набор данных с простым запросом:
Построим отчет, в котором в строках разместим группировку по контрагенту и номенклатуре, а в колонках по году и месяцу:
В отчете у нас определены ресурсы, которые мы добавили в настройки для отчета в выбранные поля:
Получили вот такой отчет:
Как видно в настройках и в результате отчета, подчиненные группировки можно добавлять не только для строк, но и для колонок.
Собственные итоги
При использовании таблицы в структуре отчета на СКД часто возникает необходимость добавить дополнительные колонки со своим составом полей или реализовать итог по горизонтали с другим составом ресурсов. Тоже самое касается и строк – чаще бывает необходимо реализовать собственные итоги в строках.
Рассмотрим на практическом примере. Пусть у нас есть такой (немного странный отчет):
За каждый месяц мы выводим количество поступивших и проданных товаров. В общем итоге по горизонтали (и только в нем) нам нужно вывести процентное отношение расхода к приходу. Первой колонкой нужно вывести остаток по номенклатуре. В общем итоге за период нужно вывести максимальный приход и максимальный расход.
Итак, первоначальная настройка отчета у нас совсем простая:
Набор и запрос несложные – вы можете сделать его на своей конфигурации сами.
Начнем с добавления процента в общем итоге. Для этого отключим вывод общего итога по горизонтали на закладке «Другие настройки»:
Далее нам нужно добавить группировку в колонки, в которой мы разместим наши итоги. Это может быть или группировка детальных записей или группировка по вычисляемому полю. Первое чуть проще, но итоговый результат нас не совсем устроит – нет заголовка у итога (это можно доработать с помощью макета), выберем второй вариант. Для этого добавим вычисляемое поле для общего итога «Итого», добавим вычисляемое поле «Процент» для расчета процента:
Добавим ресурс для общего итога с такой формулой:
Добавим колонку в настройки, добавим наши поля в выбранные ТОЛЬКО для группировки «Итого»:
Получим отчет в нужном виде:
Теперь добавим колонку остатка после колонки номенклатура. Для этого добавим второй набор данных (остатки), свяжем его с основным набором:
Теперь мы реализуем колонку через детальные записи, чтобы увидеть различие с группировкой по вычисляемому полю. Это не будет окончательное решение, но в рамках данной статьи будет достаточным:
Получим вот такую форму отчета:
И последняя задача – поменять общий вертикальный итог. Для нашей задачи такое требование можно выполнить несколько проще — без добавления группировки с собственным итогом, потому что в нашем случае не меняется макет общего итога, а меняются только значения ресурсов. Если нужно поменять макет ресурсов (состав ресурсов), то у нас есть ролик, в котором можно посмотреть, как делаются собственные итоги в строках.
Мы же решим эту часть задачи по другому, с помощью опции «Рассчитывать по» на закладке «Ресурсы»:
Процент для общего итога по строкам в общем итоге по горизонтали считать не будем. Получаем вот такой отчет:
Здесь важно заметить, что в исходном наборе данные по номенклатуре и месяцу должны быть сгруппированы, чтобы не было повторений для одной номенклатуры. Если такие повторения будут, то функция «Максимум» будет работать неверно. В этом случае выражение для ресурса в общем итоге будет более сложное, но это тема для другой статьи.
Вывод группировок в пользовательские настройки
Кроме изменения структуры отчета через варианты отчета в СКД имеется возможность изменять группировки отчета в режиме пользовательских настроек. Это может пригодится если пользователь пользуется одним и тем же вариантом отчета, но может часто изменять группировки отчета по своему желанию.
Для этого в СКД есть возможность добавить настройку группировок в пользовательские настройки:
Для отчета в целом
Для таблицы есть возможность управлять группировками строк и колонок:
Для выбранной группировки можно управлять вложенными (подчиненными) группировками:
В режиме предприятия это выглядит примерно так:
Группировки добавляются к заданным в варианте отчета. Можно не устанавливать никакие группировки в варианте отчета и тогда пользователь может полностью управлять структурой отчета. Надо конечно заметить, что в этом режиме нельзя добавить таблицу или диаграмму – только обычную группировку. Причем нельзя добавить составную группировку. При добавлении группировки как показано на рисунке устанавливается дополнительно две родительских группировки, а не одна составная:
Программная работа с группировками
При создании отчета на СКД имеется возможность создать отчет полностью программно. При этом можно таким образом создать как схему компоновки, так и заполнить настройки компоновщика настроек. В обоих случаях мы работаем с объектом «НастройкиКомпоновкиДанных».
Пример программного создания группировки
// Добавим новую группировку в структуру отчета.
Группировка = Настройки.Структура.Добавить(Тип(«ГруппировкаКомпоновкиДанных»));
// Укажем, по каким полям нужно группировать.
ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип(«ПолеГруппировкиКомпоновкиДанных»));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(«Номенклатура»);
// Укажем тип иерархии.
ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
Более подробно можно изучить программную работу с настройками (не только группировок) можно по ссылкам указанным в материалах для подготовки.
Материалы для подготовки
Особенности использования детальных записей
Настройка полей группировки в пользовательских настройках
Как выдавать в итоги по строкам таблицы ресурсы, отличные от ресурсов в колонках таблицы
Создание настроек компоновки данных из встроенного языка
Делаем отчет на СКД с собственными итогами
Пример универсальной функции для создания схемы компоновки данных
Comments
So empty here ... leave a comment!