Как убрать лишние нули в числах при выводе отчета в СКД

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

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

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

Способ 1: Использование параметра строки формата «ЧС»

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

Разберем алгоритм настройки:

  1. Перейдем на закладку Наборы данных в схеме компоновки данных.
  2. Найдем нужное числовое поле (например, Цена или Количество).
  3. В колонке Оформление нажмем на кнопку выбора в ячейке Формат.
  4. В открывшемся конструкторе форматной строки установим параметр Число десятичных знаков (например, 3), а в поле Сдвиг (или напрямую в строке формата) укажем ЧС=0.

Проанализируем результат: если мы зададим строку формата как ЧДЦ=3; ЧС=0, то для числа 5,100 система выведет 5,1. При этом для числа 5,123 будет выведено три знака. Таким образом, параметр ЧС=0 фактически сообщает системе: «выводи дробную часть только в том случае, если там есть значащие цифры, отличные от нуля».

Способ 2: Настройка через Условное оформление

Иногда настройки формата непосредственно в наборе данных могут перекрываться другими настройками или не срабатывать для итоговых полей. В таком случае мы можем воспользоваться механизмом Условного оформления.

Рассмотрим по шагам, как это сделать:

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

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

Способ 3: «Магическое» прибавление нуля в запросе

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


ВЫБРАТЬ
    ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    ТоварыНаСкладах.КоличествоОстаток + 0 КАК Количество
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладах

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

Способ 4: Использование функции ВЫРАЗИТЬ в запросе

Если нам нужно жестко ограничить количество знаков, но при этом минимизировать количество нулей, можно использовать конструкцию ВЫРАЗИТЬ. Рассмотрим пример:


ВЫБРАТЬ
    ВЫРАЗИТЬ(ЦеныНоменклатуры.Цена КАК ЧИСЛО(15, 2)) КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

Хотя этот метод ограничивает точность до двух знаков, он не всегда гарантирует отсутствие нулей в выводе (например, может получиться 36,00). Поэтому данный способ лучше комбинировать с настройкой формата в самой СКД, описанной в первом способе.

Способ 5: Выражение представления и функция Окр()

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

Пропишем в этой колонке следующее выражение:

Окр(Значение, 2)

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

Способ 6: Использование XMLСтрока() для строкового вывода

Для случаев, когда отчет носит чисто информационный характер и не предполагает дальнейшей выгрузки в Excel для расчетов, можно прибегнуть к функции XMLСтрока(). Эту функцию можно указать в Вычисляемых полях или в Выражении представления.

Особенность XMLСтрока(Число) заключается в том, что она преобразует число в строку в соответствии со стандартом XML, который автоматически отсекает все незначащие нули. Например, 12.500 превратится в "12.5".

Важный момент: помните, что этот метод превращает данные в текст. Если пользователь захочет выделить колонку в отчете и посмотреть «Сумму» в строке состояния 1С или Excel, он увидит ноль, так как для системы это будут строковые данные.

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

Мы проанализировали несколько подходов к решению задачи. Подведем итоги:

  1. Для большинства задач идеальным решением является использование формата ЧС=0 в настройках поля набора данных или условном оформлении. Это сохраняет числовой тип данных и обеспечивает чистоту вывода.
  2. Для быстрых правок в запросе можно использовать трюк Поле + 0, что часто снимает избыточную типизацию.
  3. Для сложных случаев, когда нужно вывести число именно как текст без лишних знаков, подойдет XMLСтрока(), но с осторожностью.

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

← На главную