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

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

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

Использование форматной строки (параметр ЧН)

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

  1. Откройте схему компоновки данных и перейдите на вкладку Наборы данных.
  2. В списке полей найдите нужные числовые колонки и обратитесь к колонке Оформление.
  3. Откройте настройку свойства Формат.
  4. Задайте параметр представления нулевого значения. Форматная строка будет выглядеть так: ЧН=-.

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

Настройка разного выравнивания для чисел и прочерков

Проанализируем ситуацию, когда стандартного формата недостаточно. Если по задумке числа (например, суммы или количества) должны быть прижаты к правому краю, а прочерки (нули) располагаться по центру ячейки, нам потребуется задействовать вкладку Условное оформление в настройках СКД.

Выполним следующую настройку:

  1. В свойствах поля (или в общих настройках оформления) задаем стандартное горизонтальное положение — Вправо, а также указываем формат ЧН=-.
  2. Переходим на вкладку Условное оформление и добавляем новое правило.
  3. В разделе Оформление устанавливаем параметр Горизонтальное положение в значение Центр.
  4. В разделе Условие добавляем отбор: проверяемое поле Равно 0.
  5. В разделе Оформляемые поля указываем наши числовые колонки.

Важное замечание: Если оставить список оформляемых полей пустым, СКД применит это правило ко всей строке. Это означает, что если в строковых полях (например, наименование номенклатуры) тоже окажется системный ноль или пустота, текст в них может съехать по центру. Поэтому всегда явно перечисляйте числовые поля.

Подводный камень: значения NULL в запросе

Выясним причину, по которой описанные выше настройки могут не сработать. Если ваш запрос использует левые соединения таблиц, в результирующих полях вместо математического нуля может оказаться значение NULL. В этом случае ни формат ЧН=-, ни условие равенства нулю не отработают.

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


ВЫБРАТЬ
    ЕСТЬNULL(Таблица.Сумма, 0) КАК Сумма
ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ ...

Второй путь — в условном оформлении (в отборе) вместо проверки на равенство нулю использовать вид сравнения Не заполнено. Платформа 1С корректно воспримет как нули, так и значения NULL.

Оформление на определенных уровнях группировки

Иногда прочерки вместо нулей нужны только в детальных записях, а в общих итогах должен стоять полноценный 0 (или наоборот). Чтобы реализовать такую логику, посмотрим на системное поле УровеньВГруппировке. Вы можете добавить его в условия условного оформления (например, УровеньВГруппировке Не равно 1), тем самым ограничив область применения нашей настройки центрирования и прочерков.

Использование выражения представления

Если по каким-то причинам стандартные визуальные настройки формата не подходят, рассмотрим альтернативный вариант — переопределение представления значения. На вкладке Наборы данных у каждого поля есть колонка Выражение представления. Сюда можно написать конструкцию на языке выражений СКД:


ВЫБОР 
    КОГДА Поле = 0 ТОГДА "-" 
    ИНАЧЕ Поле 
КОНЕЦ

Этот способ жестко подменит выводимое значение еще на этапе формирования данных компоновки. Однако помните, что тип значения при выводе "-" превратится в строку, что может потребовать дополнительного внимания при экспорте отчета в Excel (в ячейках будет текст, а не число).

Комбинируя форматирование ЧН=- и точечное Условное оформление, мы получаем гибкий, красивый и легко поддерживаемый отчет, полностью отвечающий строгим требованиям пользователей к визуальному оформлению данных.

← На главную