При настройке отчетов в СКД часто возникает задача сравнения текущих данных с эталонными значениями в рамках одной группы или ссылки. Классический пример — необходимость выделить цветом те строки документа, параметры которых (например, «Нетто» или «Брутто») не совпадают с показателями «Последней версии». Поскольку стандартное УсловноеОформление в СКД не позволяет напрямую обращаться к другим строкам группировки, нам потребуется предварительная подготовка данных.
Это самый популярный и наглядный способ. Вместо попыток заставить УсловноеОформление «видеть» соседние строки, мы добавим в набор данных ВычисляемоеПоле, которое будет хранить эталонное значение. Разберем этот процесс по шагам:
НеттоПоследнейВерсии.ПоследняяВерсия, вы можете использовать конструкцию с функцией ВычислитьВыражение.Рассмотрим пример реализации выражения для вычисляемого поля:
ВычислитьВыражение("Максимум(Нетто)", , , "Группировка", "Группировка")
В этом случае система вычислит максимальное значение (которое фактически является единственным для последней версии) в рамках текущей группировки по ссылке. Теперь, когда у вас в каждой строке есть колонка с эталонным значением, настройка УсловногоОформления становится элементарной задачей:
Нетто <> НеттоПоследнейВерсии.Если отчет предполагает работу с очень большими объемами данных, рекомендуется перенести вычислительную нагрузку на уровень SQL-запроса. Это обеспечит более высокую производительность, так как расчеты будут выполнены на стороне СУБД еще до того, как данные попадут в механизм СКД.
Реализовать это можно следующими способами:
ПоследняяВерсия = Истина во временную таблицу.Ссылка.НеттоЭталон.Данный метод предпочтительнее, если вы готовите ТЗ или сложный отчет с множеством группировок, так как он делает структуру СКД прозрачной и легкой для последующей поддержки.
Важно помнить, что УсловноеОформление в СКД проектировалось для выполнения простых проверок. Попытки внедрить туда сложную логику поиска или сравнения массивов данных часто приводят к непредсказуемым результатам, ошибкам в группировках и значительным просадкам производительности.
Придерживайтесь принципа «тонких» настроек: все сложные вычисления выполняйте на этапе формирования источника данных (в запросе) или с помощью ВычисляемыхПолей. Это превращает настройки оформления в простой интерпретатор условий, что гарантирует стабильную и быструю работу отчета даже при изменении структуры ваших документов или справочников.
Таким образом, мы выяснили, что для решения задачи нам достаточно «подтянуть» эталонное значение в текущую строку. Используя ВычислитьВыражение, вы экономите время на изменении запросов, а используя Соединение в запросе — обеспечиваете максимальную скорость работы для тяжелых отчетов.