Как настроить условное оформление для пустых ячеек в отчетах СКД?

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

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

Понимание природы проблемы

Основная сложность заключается в том, что СКД строит таблицу на пересечении существующих записей. Если у вас есть клиент, которому не выставляются счета, то по нему не будет записей в регистре задач. Соответственно, при выводе отчета в виде таблицы, СКД не создаст нужную строку или колонку, к которой можно было бы применить оформление. Чтобы повлиять на отображение таких «пустых» зон, нам необходимо изменить подход к формированию данных или структуре настроек.

Способ №1: Логика «дотяжки» данных в запросе

Самый надежный метод — сделать так, чтобы все потенциальные ячейки существовали в наборе данных. Для этого мы используем принцип «матричного» формирования отчета.

  1. Создание полной матрицы: Сформируйте набор данных, который включает все возможные сочетания клиентов и видов счетов. Это можно сделать через Полное соединение справочников, чтобы получить список всех комбинаций независимо от наличия задач.
  2. Присоединение фактов: Используйте Левое соединение с регистром задач. Таким образом, даже если по клиенту нет задачи, строка в запросе будет существовать, просто поле с датой будет содержать NULL.
  3. Работа с пустотой: В самой СКД вы теперь можете легко отличить существующую запись от отсутствующей, проверяя поле даты.

Способ №2: Использование условного оформления и группировок

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

Рассмотрим применение Условного оформления через логические группы:

  1. Перейдите в настройки отчета на вкладку Условное оформление.
  2. Добавьте новое условие. Используйте Группу И для комбинации критериев.
  3. Если логика более сложная (например, проверка нескольких сценариев), используйте Группу ИЛИ, внутри которой можно вкладывать дополнительные группы условий.
  4. Для проверки на «пустоту» используйте стандартное условие Не заполнено.

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

Способ №3: Использование вычисляемых полей

Иногда полезно добавить в СКД Вычисляемое поле, которое будет приводить все неопределенные значения к единому формату. Например:


// Выражение для вычисляемого поля
ЕСТЬNULL(ДатаВыставленияСчета, Дата(1, 1, 1))

После этого в Условном оформлении вы сможете использовать значение Дата(1, 1, 1) как маркер для окраски пустых ячеек. Это позволяет системе однозначно идентифицировать отсутствие данных.

Рекомендации по реализации

При настройке отчетов такого типа мы рекомендуем придерживаться следующего алгоритма:

Работая с СКД, важно помнить, что система стремится к оптимизации и удаляет пустые записи. Если вам нужно видеть эти пустоты — «заставляйте» систему считать их данными, добавляя записи с NULL или фиксированными значениями-заглушками через запрос или через механизмы Дополнения в группировках.

← На главную