Полезные примеры: посчитать разницу с предыдущей записью
Пример того как можно получить поля предыдущей записи в группировке и не только. Удобно для вычисления разницы значений предыдущей цены и текущей.
Автор данного вопроса хотел посчитать отклонение текущей цены от предыдущей. Мое решение выглядит так:
Суть решения заключается в использовании функции языка выражений СКД ВычислитьВыражение() в добавленном вычисляемом поле, которое я назвал Дельта. У функции следующие параметры:
Параметры:
- Выражение. Тип Строка;
- Группировка. Тип Строка;
- ТипРасчета. Тип Строка;
- Начало. Строка, содержащая одно из вариантов;
- Конец. Строка, содержащая одно из вариантов;
- Сортировка. Строка;
- ИерархическаяСортировка;
- ОбработкаОдинаковыхЗначенийПорядка
Нас интересует 4 и 5 параметр (Начало и Конец). Выражение будет выглядеть следующим образом:
isNULL((ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Цена", , , "Предыдущая", "Предыдущая") - Цена), 0) |
здесь вычисляем предыдущее значение поля Цена и из него вычитаем текущее значение поля Цена. Естественно, для первой записи предыдущее значение не будет вычислено и результат вычитания со значением текущего поля будет Null, поэтому что бы все было «чисто» используем функцию isNULL(естьNull), чтобы преобразовать Null в число ноль.