Как в СКД настроить формат числа, чтобы скрыть лишние нули после запятой?

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

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

Способ 1. Использование системного формата «ЧФ=Ч»

Самый быстрый и простой способ, который часто игнорируют разработчики, — это применение специальной строки формата. Рассмотрим, как это работает. В платформе 1С существует формат ЧФ=Ч (Числовой Формат = Число), который предназначен именно для таких случаев.

Проанализируем алгоритм действий:

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

Этот формат заставляет систему выводить число «как есть». Если число целое — оно выведется без точки и нулей. Если дробное — выведется с дробной частью. Однако у этого метода есть важный нюанс: формат ЧФ=Ч часто сбрасывает другие настройки оформления, такие как группировка разрядов (пробел между тысячами). Если вам важно разделять тысячи, этот способ может не подойти.

Способ 2. Условное оформление (Рекомендуемый метод)

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

Идея заключается в том, чтобы применять формат ЧДЦ=0 (ноль знаков после запятой) только к тем ячейкам, где число является целым. Для определения «целости» числа мы будем использовать математическую операцию остатка от деления на единицу.

Настроим условное оформление в СКД:

  1. Перейдем на закладку Настройки (где часто настраивается и пользовательская СКД), а затем на вложенную закладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В поле Оформление выберем пункт Формат и установим значение ЧДЦ=0. Это укажет системе, что мы хотим видеть целое число.
  4. В поле Условие добавим новое правило: Поле % 1 Равно 0. Здесь % — это оператор получения остатка от деления. Если остаток от деления на 1 равен нулю, значит, перед нами целое число.
  5. В поле Оформляемые поля выберем наше числовое поле.

Важное дополнение: если вы работаете с данными, которые могут содержать пустые значения (NULL), то условие может отработать некорректно. В таком случае в выражении условия лучше использовать проверку ЕСТЬNULL(Поле, 0) % 1 = 0.

Способ 3. Вычисляемое поле с функцией Формат()

Если по каким-то причинам предыдущие методы не подходят, мы можем создать вычисляемое поле, которое будет динамически определять свою строку формата. Посмотрим на пример формулы, которую можно вставить в колонку Выражение на закладке Вычисляемые поля:

Формат(ИмяВашегоПоля, ?(ИмяВашегоПоля % 1 = 0, "ЧДЦ=0", "ЧДЦ=3"))

Разберем, что здесь происходит. Мы используем тернарный оператор ?(). Если остаток от деления числа на 1 равен 0, система применяет формат без десятичных знаков (ЧДЦ=0), иначе применяется стандартный формат с тремя знаками (ЧДЦ=3). Для более сложных вычислений в выражениях полей можно использовать методы глобального контекста в системе компоновки данных.

Внимание: У этого способа есть существенный недостаток. Функция Формат() превращает число в строку. Это означает, что:

Тонкости при работе с ресурсами и итогами

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

Чтобы формат применялся ко всему отчету, включая итоги:

  1. Перейдите на закладку Настройки.
  2. Выберите самый верхний элемент (Отчет).
  3. Настройте Условное оформление там, как было описано во втором способе.
  4. Убедитесь, что в списке оформляемых полей выбрано именно то поле, которое является ресурсом.

Проблема точности вещественных чисел

Иногда при использовании метода Поле % 1 = 0 вы можете заметить, что число 5 все равно выводится как 5.000. Это может быть связано с особенностями хранения чисел с плавающей точкой в базе данных. Выясним причину: на самом деле число может храниться как 5.000000000001.

В таких случаях условие в оформлении стоит немного усложнить, используя функцию округления:

Окр(Поле, 3) % 1 = 0

Это позволит отсечь микроскопические погрешности вычислений и корректно определить, является ли число целым для пользователя.

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

← На главную