Как убрать незначащие нули в дробной части числа в отчетах СКД

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

При разработке отчетов в Системе компоновки данных (СКД) разработчики часто сталкиваются с ситуацией, когда числовые данные, хранящиеся в базе с фиксированной точностью (например, тип Число(15, 6)), отображаются в отчете с лишними нулями справа. Например, вместо лаконичного числа 1 пользователь видит 1,000000, а вместо 1,1 отображается 1,100000. Это перегружает интерфейс и затрудняет чтение отчета.

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

Метод 1: Настройка форматной строки в схеме компоновки данных

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

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

Проанализируем, какие параметры форматной строки помогут нам добиться цели:

Вариант А: Использование параметра ЧФ=Ч

Параметр ЧФ (Числовой Формат) со значением Ч является системной инструкцией для платформы использовать стандартное представление числа. Во многих случаях установка ЧФ=Ч (или даже оставление форматной строки полностью пустой) заставляет систему скрывать незначащие нули автоматически. Это происходит потому, что платформа перестает жестко следовать настройкам точности из метаданных конфигурации.

Вариант Б: Параметр ЧС (Сдвиг)

Как было отмечено в обсуждении, установка параметра ЧС=0 также помогает решить проблему. Несмотря на то, что параметр ЧС предназначен для масштабирования (умножения или деления на степени десяти), его явное указание в значении 0 сбрасывает стандартное форматирование поля, пришедшее из описания типа данных в регистре, и убирает лишние хвосты в дробной части.

Метод 2: Использование функции ВЫРАЗИТЬ в запросе

Иногда полезно ограничить точность числа еще на уровне получения данных из базы. Если мы точно знаем, что нам не нужна точность более двух или трех знаков, мы можем применить функцию ВЫРАЗИТЬ непосредственно в тексте запроса набора данных.

Рассмотрим пример кода в запросе:


ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ВЫРАЗИТЬ(ПродажиОбороты.КоличествоОборот КАК ЧИСЛО(15, 3)) КАК Количество
ИЗ
    РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

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

Метод 3: Гибкое условное оформление

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

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

Этот метод позволяет добиться идеального визуального ряда, где целые числа выглядят как 10, а дробные — как 10,5.

Метод 4: Вычисляемые поля и строковые функции

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

На закладке Вычисляемые поля можно прописать выражение:

Формат(Количество, "ЧГ=0")

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

Метод 5: Работа с ресурсами (Округление)

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

Округлить(Сумма(Количество), 3)

Это гарантирует, что в итогах не появится "мусор" из мелких дробных частей, которые часто возникают при делении или сложных распределениях в учете. В сочетании с форматной строкой ЧФ=Ч в оформлении поля, это даст максимально чистый и профессиональный вид отчета.

Почему это происходит? Подведем итог

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

Наилучшей практикой считается использование форматной строки ЧФ=Ч или ЧС=0 в настройках набора данных СКД, так как это сохраняет типизацию данных (число остается числом) и обеспечивает корректную работу всех механизмов платформы, включая расшифровку и экспорт в Excel.

← На главную