1с скд вычисляемое поле по группировке

1с скд вычисляемое поле по группировке

1с. СКД. Вычисляемое поле в группировке.
Эта методика используется:
— когда итог в группировке отчета СКД 1с требуется не просто просуммировать колонку подчиненныч строк, а вычислить значение по формуле.
— когда вам надо показать только итог в группировке, не показывая основного значения.

1с скд вычисляемое поле по группировке

Делается эта фишка следующим образом:
1. В отчет СКД добавить вычисляемое поле, Выражение=0

1с скд вычисляемое поле по группировке

1с скд вычисляемое поле по группировке

Немного теории по функции СКД «Вычислить».
Функция Вычислить предназначена для вычисления выражения в контексте некоторой группировки. Функция имеет следующие параметры:
— Выражение – строка, содержащая вычисляемое выражение;
— Группировка – строка, содержащая имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка
— ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
— Тип расчета — строка, В случае если данный параметр имеет значение ОбщийИтог, выражение будет вычисляться для всех записей группировки. В случае если значение параметра Группировка, значения будут вычисляться для текущей групповой записи группировки.

Например:
Сумма(Продажи.СуммаОборот) / Вычислить(«Сумма(Продажи.СуммаОборот)», «ОбщийИтог»)
В данном примере в результате получится отношение суммы по полю «Продажи.СуммаОборот» записи группировки к сумме того же поля во всей компоновке.
Еще пример:
ВычислитьВыражение(«Сумма(Стоимость)/Выбор Когда Сумма(Количество)=0 Тогда 1 Иначе Сумма(Количество) Конец»,»Подразделение»,»Группировка»)

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

Источник

Работа с вычисляемыми полями

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

Пример

В приведенном запросе получаются данные из регистра продаж и регистра планов продаж. Результатом запроса будет таблица, где для каждого подразделения и каждой номенклатуры будет получено плановое и фактическое количество продаж.

Определим вычисляемое поле. Для этого перейдем в конструкторе схемы компоновки данных на вкладку Вычисляемые поля и добавим поле.

1с скд вычисляемое поле по группировке

Результат отчета будет выглядеть так:

НоменклатураПодразделениеСтоимость планСтоимость фактПеревыполнение плана
Вентилятор настольныйОтдел оптовой продажи238,32737,55209,48
Мужские сапоги с искусственным мехомОтдел оптовой продажи234,24-100,00
Мишка (конфеты)Отдел розничной продажи114,91Не запланировано

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

1с скд вычисляемое поле по группировке

Теперь в итог отчета будет выводиться сумма по полям, в том числе и по полю ПеревыполнениеПлана :

НоменклатураПодразделениеСтоимость планСтоимость фактПеревыполнение плана
Вентилятор настольныйОтдел оптовой продажи238,32737,55209,48
Мужские сапоги с искусственным мехомОтдел оптовой продажи234,24-100,00
Мишка (конфеты)Отдел розничной продажи114,91Не запланировано
Итого472,56852,46109,48

Для того чтобы получить правильный итог по выполнению плана изменим формулу расчета итога по полю Выполнение плана :

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

Введем данную формулу в выражение ресурса:

1с скд вычисляемое поле по группировке

Теперь результат отчета будет выглядеть так:

Источник

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

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

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

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

1с скд вычисляемое поле по группировке

Рисунок 1

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

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

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

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

1с скд вычисляемое поле по группировке

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

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

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

1с скд вычисляемое поле по группировке

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

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

1с скд вычисляемое поле по группировке

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

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

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

Таблица

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

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

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

1с скд вычисляемое поле по группировке

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

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

1с скд вычисляемое поле по группировке

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

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

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

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

1с скд вычисляемое поле по группировке

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

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

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

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

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

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

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

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

Источник

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

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