воскресенье, 30 июня 2019 г.

Примеры использования ВычислитьВыражение () в СКД



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

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




Пример 1. Процент относительно заданной группировки

Среди стандартного состава выбранных полей варианта отчета есть поле ПроцентВГруппе. Оно позволяет вывести в отчет процентное отношение значения текущей группировке к значению в ее родительской группировке.



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

1.Добавим вычисляемое поле "ПроцентВгруппировке"

2.Поместим добавленное поле в ресурсы и удалим выражение


Напишем в выражение 
Сумма(Оборот) / ВычислитьВыражение("Сумма(Оборот)","БизнесРегион" , , , , , )*100

3. Добавим поле в выбранные поля.


Пример 2. Расчет суммы нарастающим итогом

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

Если решать эту задачу исключительно при помощи языка запросов, то получается довольно сложный, нетривиальный запрос, в котором используется так называемое "тэта-соединение" - соединение по условию, отличному от простого равенства полей двух таблиц.

Но, используя функцию ВычислитьВыражение(), можно решить эту задачу очень просто и эффективно. 

1.Добавим вычисляемое поле "СуммаНарастающим"

2.Поместим добавленное поле в ресурсы и удалим выражение


Напишем в выражение
ВычислитьВыражение("Сумма(Оборот)", , ,"Первая" ,"Текущая" , , )

3. Добавим поле в выбранные поля.


Пример 3. Расчет максимального значения в группировке

Пример 3 показывает, как можно получить максимальное значение в заданной группировке. Функция Максимум() не всегда может помочь, поэтому приходится применять описанный прием с использованием функции ВычислитьВыражениеСГруппировкойВМассив().
Что необходимо получить

1.Добавим вычисляемое поле "МаксималнаяСуммаПродаж"

2.Поместим добавленное поле в ресурсы и удалим выражение
Напишем в выражение
Максимум(ВычислитьВыражениеСГруппировкойМассив("Сумма(Оборот)","Товар" , , ))

3.Добавляем поля в выбранные поля и смотрим результат.
Результат немного не  тот который мы хотели получить. У нас расчитываеться максимальная сумма продаж (Бизнес-регион), но  мы еще видим что у нас расчитываются
ниже стоящие группировки.  А они не имеют смысл так как результат будет совпадать с полем обороты. Нужно избавиться от них. Делаем это на уровне группировки


1. Откажемся от выбранных полей на уровне Отчет и выберем на уровнях группировки


2. На уровен Бизнес-регион убираем АВТО и ставим нужные поля
3. ПО остальным группировкам убираем АВТО и ставим нужные поля



4. Получаем нужный нам результат. 



5.Отчет правильный но не совсем удобный. Сделаем  его более компактным.

На группировке Бизнес-регион выберем тип макета -Вертикально



в итоге получается красивее и компактнее






Комментариев нет:

Отправить комментарий

Печать чека ККМ из драйвера ККМ

Суть проблемы: Пробиваем чек из 1С: Бухгалтерии. Чек пробит не  правильно. Теперь нужно сделать чек коррекции. Но в программе это сделать н...