Часто при разработке отчетов в Системе Компоновки Данных (СКД) разработчики сталкиваются с ситуацией, когда математические вычисления приводят к появлению крайне малых чисел (например, 0.000000001). При попытке округлить такие значения через свойство Формат, пользователь видит в ячейках «ненастоящие» нули (0.000). В этой статье мы разберем, как сделать так, чтобы такие значения визуально исчезали, не нарушая при этом итоговые суммы и точность расчетов.
Этот способ является наиболее гибким, так как он не затрагивает сами данные, хранящиеся в наборе данных. Мы просто «подсвечиваем» ячейку так, чтобы значение стало невидимым.
Поле > -0.0001 И Поле < 0.0001.Это решение идеально, так как оно полностью сохраняет исходное число для всех математических операций, включая группировки и общие итоги.
Если вам необходимо управлять отображением через логику вычислений, можно использовать Выражения в настройках Ресурсов СКД. Рассмотрим, как прописать условие, чтобы нули заменялись на прочерки.
Для того чтобы значения ниже определенного порога не отображались, используйте следующую конструкцию в поле Выражение ресурса:
ВЫБОР
КОГДА Сумма(МоеПоле) < 0.0001 ТОГДА "-"
ИНАЧЕ Сумма(МоеПоле)
КОНЕЦ
Важное замечание: При использовании этого метода необходимо следить за тем, как СКД обрабатывает типы данных. Если вы возвращаете строку («-»), поле может перестать корректно суммироваться в вышестоящих группировках. Чтобы этого избежать, убедитесь, что вы применяете это выражение к конкретным полям, а не ко всему набору данных целиком, и учитывайте, что СКД может попытаться привести результат к строковому типу.
Многие разработчики пытаются использовать Выражение представления для решения этой задачи, однако это редко приводит к успеху по нескольким причинам:
Выражение представления часто игнорируется при выводе числовых данных, если для них задан строгий формат ячейки.СКД может принудительно преобразовать тип данных из Число в Строка, что мгновенно ломает все итоги отчета: программа просто перестанет суммировать значения, так как не умеет складывать строки.Если проблема вызвана особенностями распределения сумм (например, размазывание стоимости по комплектующим), лучше решать её не на уровне отображения, а на уровне получения данных:
ВЫРАЗИТЬ: Если вам критически важно видеть точные значения, используйте в запросе конструкцию ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 10)). Это заставит платформу 1С зафиксировать точность и не «съедать» мелкие дроби при обработке наборов данных.Применяя эти методы, вы сможете добиться чистого и профессионального вида отчетов, не теряя при этом точности финансовых показателей.