Простой пример использования пользовательских полей в отчете на СКД

06 ноября 2013

Отчет

Отчет получает остатки товаров на складах в различных разрезах (характеристики, серии, единицы измерения и т.д.). Чтобы не усложнять пример, оставим лишь группировку по номенклатуре и вывод лишь конечного остатка на дату отчета. Итоговая таблица будет показывать остатки по номенклатуре в разрезе складов.

Приблизительный вид сформированного отчета

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

  1. Оповещение о количестве. Если количество меньше или равно 5, то оповещение "Недостаточно". Если количество больше 5, то меньше или равно 10, то оповещение "Нормально". Если количество больше 10, то "Переизбыток".
  2. Формула расчета конечного остатка. В дополнительной колонке пользователь хочет видеть какие действия выполнила программа чтобы получить значение конечного остатка. То есть формулу "Начальный остаток + Оборот = Конечный остаток", где будут подставлены соответствующие значения.

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

Дополнительные поля

И так, приступим. Зайдем в настройки варианта отчета:

Открываем настройку варианта отчета

Перед нами откроется конструктор настроек варианта отчета СКД. Перейдя на вкладку "Пользовательские поля" начнем их создание.

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

На скриншоте уже показаны два созданных пользовательских поля, функционал которых был описан выше. Рассмотрим настройки каждого. Начнем с поля "Оповещение".

Настройка пользовательского поля "Оповещение"

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

Синтаксис выражения похож на язык запросов 1С:Предприятия. Имеются некоторые отличия, но касаться подробно мы в настоящей статье мы их не будем. В выражении используется оператор выбора:

"Выбор Когда Тогда Иначе Конец",

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

Аналогично заданы настройки для поля "Формула расчета конечного остатка":

Настраиваем формулу расчета конечного остатка

Здесь нужно сказать о некоторых нюансах:

  1. Формулу в ячейке мы можем показать лишь в виде строки. Поэтому все числовые значения мы преобразуем к строке с помощью метода языка выражений СКД "Строка()", преобразующего любое значение в строку. После выполняем конкатенацию строк. 
  2. Для того, чтобы поле отображалось в итогах отчета, добавим аналогичную формулу в выражение итоговых записей. Нужно лишь добавить агрегирующие функции "СУММА()" для каждого значения в соответствии с итогами.

Все готово к использованию полей в отчете!

Настраиваем и формируем отчет

Поле "Формула расчета конечного остатка" добавим в выводимые поля отчета:

Добавляем созданное пользовательское поле в состав выводимых полей отчета

Выражение "Оповещение" добавим к детальным записям номенклатуры. Для этого в группировку "Номенклатура" добавим поле выражения "Оповещение". После этого структура отчета примет следующий вид:

Настройка структуры отчета

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

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

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

Поверьте мне, обучить его использовать эти возможности можно, ведь это куда проще, чем писать формулы в электронных таблицах Excel.

  СКД

comments powered by Disqus