Вычисляемое поле в СКД через экспортную функцию общего модуля
Решение некоторых аналитических задач в системе компоновки данных (СКД) требует гибкости — стандартных средств выражения не всегда достаточно. В таких случаях логика вычисления может быть вынесена в общий модуль в виде экспортной функции. Это не только делает код более прозрачным, но и позволяет повторно использовать алгоритмы в других отчетах.
Подготовка общего модуля и экспортной функции
Начать стоит с создания общего модуля, если он ещё не используется. В модуле определяют функцию, которая принимает необходимые параметры и возвращает результат вычисления. Как пример: рассчитываем процент выполнения плана, передавая фактическое и плановое значения. Важно, чтобы функция имела экспортный модификатор — иначе СКД не увидит ее в списке доступных методов. Каждый параметр имеет явный тип: число, строка или дата, что снижает риск ошибок при вызове.
Добавление вычисляемого поля в схему компоновки данных
Следующий этап — настройка самой схемы. В СКД создается вычисляемое поле, где в качестве выражения используется вызов экспортной функции из общего модуля. Синтаксис: Модуль.ИмяФункции(Параметр1; Параметр2). Например, если функция называется «РассчитатьПроцент», а модуль — «УниверсальныеФункции», то выражение будет: УниверсальныеФункции.РассчитатьПроцент(Факт; План). При этом Факт и План — это поля источника данных отчета.
Особенности и ограничения подхода
Метод расширяет возможности формы отчета, сохраняя ответственность за вычисления вне основной конфигурации. Полезно для сложных бизнес-логик, но требует более строгого контроля версий модуля: неаккуратное изменение функции затронет все отчеты, где она используется. Тестирование экспортных функций обязательно — даже небольшая ошибка в логике выводит на нет преимущества переиспользования.
Пример: вычисление скидки по сумме заказа
В компании действует правило: при заказе на сумму свыше 50 000 руб. применяется скидка 5%. Функция в общем модуле вычисляет скидку и возвращает итоговую сумму. В СКД создается поле «ОбщаяСуммаСоСкидкой», в формуле которого вызывается функция: СкидочныеМодули.РассчитатьИтоговуюСумму(СуммаЗаказа). Это облегчает изменение алгоритма: если процент скидки корректируется, разработчику достаточно изменить один модуль, не заходя в настройки каждого отчета вручную.
Заключение
Использование экспортных функций общего модуля позволяет уменьшить дублирование кода и централизовать логику вычислений в отчетах на СКД. Это оптимальное решение, когда стандартных выражений недостаточно, а прозрачность и управляемость расчетов находятся в приоритете.
Join the conversation
You must be logged in to reply to this topic.