Почему в отчете СКД числовые значения отображаются без дробной части?

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

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

Причина возникновения проблемы

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

Однако, как только мы начинаем производить манипуляции с данными в запросе, например, используем:

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

Метод 1: Явное задание типа значения в СКД

Это самый надежный и правильный способ решения проблемы. Вам не нужно пытаться «обмануть» систему в тексте запроса — достаточно указать тип данных в настройках самой СКД.

  1. Откройте схему компоновки данных.
  2. Перейдите на вкладку Наборы данных.
  3. В списке полей найдите проблемный показатель (в нашем случае — КоличествоРасход).
  4. В колонке Тип значения нажмите кнопку выбора (три точки).
  5. Выберите Число и установите необходимую длину и точность, например, 15 и 3.

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

Метод 2: Установка формата вывода

Если вам не нужно менять тип данных, а достаточно лишь красиво вывести значение на печать, воспользуйтесь настройками оформления.

Вы можете задать формат вывода прямо в настройках выбранных полей в самом отчете:

  1. Перейдите в настройки отчета.
  2. Найдите нужное поле в структуре отчета.
  3. Откройте свойства этого поля.
  4. В поле Формат задайте строку формата, например: ЧЦ=15; ЧДЦ=3.

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

Метод 3: Использование типизации в запросе (как вспомогательный)

Хотя сам по себе оператор ВЫРАЗИТЬ в запросе не всегда помогает СКД правильно интерпретировать тип, его использование в связке с ЕСТЬNULL считается хорошей практикой для обеспечения целостности данных.

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


ВЫРАЗИТЬ(ЕСТЬNULL(Таблица.КоличествоРасход, 0) КАК Число(15, 3)) КАК КоличествоРасход

Или через ВЫБОР:


ВЫБОР
    КОГДА Таблица.КоличествоРасход ЕСТЬ NULL ТОГДА 0
    ИНАЧЕ Таблица.КоличествоРасход
КОНЕЦ КАК КоличествоРасход

Важное примечание: Даже если вы используете ВЫРАЗИТЬ, мы рекомендуем продублировать это указанием Типа значения в наборе данных СКД, так как именно настройки СКД имеют приоритет при конечном выводе данных в форму отчета. Это позволит избежать «спортивных» вопросов, почему один показатель выводится корректно, а другой — нет.

Резюме

Если вы столкнулись с потерей разрядности в СКД, не тратьте время на бесконечное переписывание запроса. Самый эффективный путь — явное указание типа в Наборах данных. Это действие гарантированно закрепляет за полем нужный масштаб, и система перестает пытаться «оптимизировать» вывод чисел, сохраняя все знаки после запятой.

← На главную