При выводе числовых данных в печатные формы и отчеты разработчики часто сталкиваются с ситуацией, когда нулевые значения отображаются как пустые ячейки либо как одиночный ноль без дробной части (например, 0 вместо требуемого 0,00). Попытки настроить точность через ОписаниеТипов или указание только разрядности в формате ячейки нередко приводят к пустому значению. Разберем по шагам, почему так происходит и как правильно настроить форматную строку для гарантированного вывода нуля с копейками.
По умолчанию в платформе 1С поведение форматирования чисел устроено так, что при значении 0 система может скрывать вывод числа, если не заданы специальные параметры отображения. Стандартная конструкция ЧЦ=15; ЧДЦ=2 задает лишь общую длину числа и количество знаков дробной части для ненулевых значений, но не определяет строго, как именно должен выглядеть ноль.
Для явного переопределения вида нулевого значения в языке форматирования 1С предусмотрен параметр ЧН (представление нуля). Если этот параметр не заполнен или настроен некорректно, пустая строка или одиночный ноль становятся стандартным поведением платформы.
Рассмотрим основной и самый надежный способ решения задачи. Нам необходимо скорректировать свойство ячейки в табличном документе макета.
Параметр.ЧН:ЧЦ=15; ЧДЦ=2; ЧН=0,00
Разберем параметры этой строки подробнее:
ЧЦ=15 — общая длина числа (целая часть + дробная часть).ЧДЦ=2 — длина дробной части (число знаков после запятой).ЧН=0,00 — явный текст, который выводится, если значение переменной равно 0.Если в вашем отчете в качестве разделителя дробной части требуется точка вместо запятой, укажем параметр ЧРД:
ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧН=0.00
Нередко разработчики пытаются вызвать функцию Формат() прямо в коде модуля при заполнении параметров области. Посмотрим на типичный пример, содержащий скрытую проблему:
// Нежелательный подход для числовых ячеек:
ОбластьСтрока.Параметры.Сумма = Формат(Выборка.Сумма, "ЧЦ=15; ЧДЦ=2; ЧН=0,00");
Проанализируем этот код. Функция Формат() возвращает значение типа Строка. При выгрузке такого табличного документа в формат Microsoft Excel ячейка перестанет быть числом. Пользователи потеряют возможность суммировать колонку через стандартные формулы Excel (СУММ/SUM).
Чтобы сохранить исходный числовой тип данных и одновременно применить корректное отображение нуля, передадим в параметр чистое число, а формат установим самой ячейке:
// Правильный подход:
ОбластьСтрока.Параметры.Сумма = Выборка.Сумма; // Передаем число
ОбластьСтрока.Область("R1C3").Формат = "ЧЦ=15; ЧДЦ=2; ЧН=0,00"; // Накладываем оформление
ТабличныйДокумент.Вывести(ОбластьСтрока);
Выясним причину, почему формат из палитры свойств макета может полностью игнорироваться. Если ячейка макета имеет тип заполнения Шаблон (например, текст Всего к оплате: [Сумма] руб.), свойство Формат самой ячейки не применяется к выражениям в квадратных скобках.
В этом случае форматирование необходимо вызывать непосредственно внутри выражения шаблона:
[Формат(Сумма, "ЧЦ=15; ЧДЦ=2; ЧН=0,00")]
Если в макет попадает значение NULL (например, из-за левого соединения в запросе) или Неопределено из неинициализированной колонки таблицы значений, числовой формат не сработает. Функция форматирования для таких типов всегда вернет пустую строку, так как NULL не равен нулю.
Чтобы избежать пустых ячеек, выполним обработку на уровне запроса с помощью функции ЕСТЬNULL:
ВЫБРАТЬ
Товары.Ссылка КАК Товар,
ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Количество,
ЕСТЬNULL(Остатки.СуммаОстаток, 0) КАК Сумма
ИЗ
Справочник.Номенклатура КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
ПО Товары.Ссылка = Остатки.Номенклатура
Если же данные собираются вручную через ДеревоЗначений или ТаблицаЗначений, проверим, чтобы при добавлении строк полям по умолчанию присваивалось число 0, а не оставлялись пустыми.
В платформе 1С также существует параметр ЧО (Отображение нуля):
ЧО=0 (или ЧО=Ложь) — принудительно скрывает вывод нуля, формируя пустую строку даже при заданных знаках после запятой ЧДЦ.ЧО=1 (или ЧО=Истина) — разрешает стандартное отображение нуля.Если в вашем отчете или макете ноль не выводится, проверьте, не был ли ошибочно установлен параметр ЧО=0 в конструкторе формата.
При разработке отчетов на Системе компоновки данных (СКД) настраивать макет вручную не требуется. Разберем, как задать отображение 0,00 штатными средствами компоновки:
ЧДЦ = 2, а в поле «Представление нуля» вписываем 0,00 (строка примет вид ЧДЦ=2; ЧН=0,00).Таким образом, комбинация параметров ЧЦ, ЧДЦ и обязательного ЧН=0,00 обеспечивает корректный и единообразный вывод числовых данных во всех печатных формах и отчетах 1С.