Как скрыть отображение дробных значений, близких к нулю, в отчете на СКД?

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

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

Метод 1: Использование Условного оформления (рекомендуемый подход)

Этот способ является наиболее гибким, так как он не затрагивает сами данные, хранящиеся в наборе данных. Мы просто «подсвечиваем» ячейку так, чтобы значение стало невидимым.

  1. Откройте настройку отчета в СКД.
  2. Перейдите на вкладку Условное оформление.
  3. Добавьте новое правило. В качестве условия укажите поле, которое нужно скрыть.
  4. Установите условие: Поле > -0.0001 И Поле < 0.0001.
  5. На вкладке оформления установите свойство Текст в значение « » (пробел) или установите цвет текста, совпадающий с цветом фона ячейки.

Это решение идеально, так как оно полностью сохраняет исходное число для всех математических операций, включая группировки и общие итоги.

Метод 2: Настройка выражений в ресурсах

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

Для того чтобы значения ниже определенного порога не отображались, используйте следующую конструкцию в поле Выражение ресурса:


ВЫБОР 
    КОГДА Сумма(МоеПоле) < 0.0001 ТОГДА "-" 
    ИНАЧЕ Сумма(МоеПоле) 
КОНЕЦ

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

Почему не стоит использовать «Выражение представления»

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

Рекомендации по архитектуре данных

Если проблема вызвана особенностями распределения сумм (например, размазывание стоимости по комплектующим), лучше решать её не на уровне отображения, а на уровне получения данных:

  1. Проверка на этапе запроса: Если число меньше допустимой погрешности, приводите его к нулю еще до попадания в СКД.
  2. Алгоритм распределения: Вместо бесконечного дробления используйте алгоритм распределения остатка. В последнюю строку распределения записывайте разницу между итоговой суммой и суммой уже распределенных строк. Это гарантирует, что сумма будет равна 100%, а «хвостов» не возникнет.
  3. Использование ВЫРАЗИТЬ: Если вам критически важно видеть точные значения, используйте в запросе конструкцию ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 10)). Это заставит платформу 1С зафиксировать точность и не «съедать» мелкие дроби при обработке наборов данных.

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

← На главную