При формировании печатных форм разработчики часто сталкиваются с ситуацией, когда год документа отображается с нежелательным пробелом между разрядами — например, как «2 024» вместо «2024». Разберем причины такого поведения платформы 1С:Предприятие и рассмотрим несколько правильных способов вывода года без пробелов.
Выясним причину возникновения проблемы. Встроенная функция Год() возвращает значение с типом Число. При передаче числа в строковый параметр макета или неявном преобразовании числа в строку платформа 1С автоматически применяет стандартные региональные установки текущего сеанса. Для русской локализации по умолчанию включено разделение групп разрядов по три цифры.
Важно отметить, что в качестве разделителя групп разрядов платформа использует не стандартный пробел (код 32), а неразрывный пробел (Символы.НПП, код 160). По этой причине стандартная замена подстроки вида СтрЗаменить(Строка(Год), " ", "") не срабатывает, так как ищет обычный пробел.
Для корректного вывода года без лишних символов разберем по шагам доступные варианты решения.
Наиболее лаконичный и универсальный способ — не извлекать числовую составляющую года через функцию Год(), а сразу отформатировать исходную дату с помощью встроенной функции Формат() и спецификатора формата даты ДФ.
Посмотрим на пример кода:
Подвал.Параметры.ГодДокумента = Формат(Объект.Дата, "ДФ=yyyy");
Спецификатор yyyy (или его кириллический аналог гггг) возвращает четырехзначный год в виде строки без каких-либо разделителей групп разрядов. Если требуется получить только две последние цифры года, можно использовать формат ДФ=yy или ДФ=гг.
Если в алгоритме уже получено числовое значение года (например, из функции Год() или других вычислений), применим форматирование для чисел с отключением группировки разрядов.
Для этого используется параметр ЧГ (группировка цифр целой части). Если указать значение ЧГ=0, разделители групп применяться не будут:
Подвал.Параметры.ГодДокумента = Формат(Год(Объект.Дата), "ЧГ=0");
В результате работы этой функции четырехзначное число будет преобразовано в сплошную строку без неразрывных пробелов.
Проанализируем ситуацию, когда форматирование предпочтительнее настроить визуально в самом макете печатной формы, не усложняя программный код дополнительными вызовами функций.
Для настройки ячейки в табличном документе выполним следующие шаги:
Подвал.Параметры.ГодДокумента = Объект.Дата;), перейдем на вкладку Дата и укажем формат гггг.Год()), перейдем на вкладку Число и в поле Группировка установим значение 0 (что соответствует формату ЧГ=0).При использовании типа заполнения ячейки Шаблон формат можно задать аналогичным образом в свойствах или прямо в тексте шаблона.