Как настроить формат числа в параметре макета СКД, если стандартные настройки не работают

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

Работа с Системой компоновки данных (СКД) часто преподносит сюрпризы, особенно когда дело касается визуального оформления отчетов — решить их поможет консоль СКД и инструменты анализа структуры системы. Одна из самых распространенных и неприятных ситуаций — когда программист задает формат числа в свойствах параметра макета (например, ЧЦ=15; ЧДЦ=2), но при формировании отчета система упорно выводит число с неограниченным количеством знаков после запятой или вовсе игнорирует разделители групп. Давайте разберем по шагам, почему это происходит и как заставить СКД выводить данные правильно.

Анализ проблемы: почему настройки в макете могут не работать

Прежде чем переходить к решениям, проанализируем внутреннюю логику СКД — для этого подойдёт готовый отчет с обходом сложностей настройки СКД. В системе существует жесткая иерархия оформления. Когда мы создаем собственный макет в виде табличного документа на вкладке Макеты, мы ожидаем, что настройки ячейки или параметра будут приоритетными. Однако 1С часто отдает предпочтение настройкам, заданным на уровне набора данных или в условном оформлении.

Рассмотрим основные причины игнорирования формата в макете:

  1. Неопределенный тип значения: Если для параметра в макете не указан тип Число, система воспринимает данные как произвольный тип и не применяет к ним правила числового форматирования.
  2. Приоритет полей набора данных: Настройки формата, заданные в колонке Оформление на вкладке Наборы данных, имеют очень высокий приоритет.
  3. Тип заполнения ячейки: Настройка формата внутри диалогового окна редактирования параметра макета часто работает нестабильно. Более надежным является использование палитры свойств самой ячейки.
  4. Использование шаблонов: Если ячейка имеет тип заполнения Шаблон, стандартное форматирование параметров внутри него практически всегда игнорируется.

Решение 1: Настройка формата через свойства поля в наборе данных

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

Перейдем на вкладку Наборы данных. Найдем нужное нам числовое поле и в колонке Оформление нажмем на кнопку выбора. В открывшемся окне найдем параметр Формат. Именно здесь следует задать строку формата, например:

ЧЦ=15; ЧДЦ=2; ЧРД=,; ЧГ=3,0

Где:

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

Решение 2: Настройка формата через свойства ячейки макета

Если нам необходимо, чтобы формат применялся только в конкретном макете, разберем более детальную настройку ячейки — есть инструмент для визуального оформления отчетов. Часто разработчики пытаются задать формат через Свойства параметра макета (клик по параметру в списке параметров макета). Попробуем альтернативный путь — через палитру свойств самой ячейки табличного документа.

  1. Выделим ячейку макета, в которой выводится число.
  2. Откроем Палитру свойств (обычно справа или через контекстное меню).
  3. Убедимся, что Тип заполнения установлен как Параметр.
  4. Найдем в разделе Оформление свойство Формат.
  5. Нажмем на кнопку "лупа" и настроим нужный формат (например, точность 2 знака).
  6. Важно: В этой же палитре свойств найдите раздел Тип значения. Обязательно снимите флажок "Составной тип" и выберите только Число. Укажите допустимую длину и точность.

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

Решение 3: Использование функции Формат() в выражениях макета

Проанализируем ситуацию, когда визуальные настройки не помогают. В СКД есть мощный инструмент — выражения параметров макета. Мы можем принудительно преобразовать число в строку нужного вида прямо в момент вывода.

Для этого в списке параметров макета (в нижней части вкладки Макеты) найдем наш параметр. В колонке Выражение вместо простого имени поля (например, Сумма) напишем вызов функции:

Формат(Сумма, "ЧЦ=15; ЧДЦ=2")

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

Решение 4: Особенности работы с шаблонами

Разберем случай, когда ячейка имеет тип Шаблон, например: Итого к оплате: [СуммаДокумента] руб.. В таких случаях настройки формата для параметра СуммаДокумента внутри свойств макета игнорируются практически всегда.

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

  1. Перейдем на вкладку Вычисляемые поля.
  2. Добавим новое поле, например, СуммаФорматированная.
  3. В поле Выражение напишем: Формат(СуммаДокумента, "ЧЦ=15; ЧДЦ=2").
  4. В макете в шаблоне используем это новое поле: Итого к оплате: [СуммаФорматированная] руб..

Программная передача значений и форматирование

Если вы формируете отчет программно и заполняете параметры макета вручную (например, через ЗаполнитьЗначенияСвойств), важно следить за типом передаваемых данных. Проанализируем типичную ошибку: если в параметр попадает значение типа Null или Неопределено, никакое форматирование "ЧДЦ=2" не сработает. Перед передачей данных в параметры макета убедитесь, что значения приведены к числу:


Если ЗначениеЗаполнения = Неопределено Тогда
    ПараметрыМакета.Сумма = 0;
Иначе
    ПараметрыМакета.Сумма = Число(ЗначениеЗаполнения);
КонецЕсли;

Только после того, как в параметр попадет значение с типом Число, настройки макета смогут быть применены платформой в процессе вывода табличного документа.

Заключение

Мы рассмотрели различные способы борьбы с "непослушным" форматированием в СКД. Подведем итог: если формат в макете не применяется, в первую очередь проверьте Тип значения в свойствах ячейки и попробуйте задать формат в Наборе данных. Если же требуется максимальный контроль — используйте функцию Формат() в выражениях параметров макета. Эти методы позволяют решить проблему в 99% случаев.

← На главную