Как убрать пробел при выводе года в печатную форму 1С?

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

При формировании печатных форм разработчики часто сталкиваются с ситуацией, когда год документа отображается с нежелательным пробелом между разрядами — например, как «2 024» вместо «2024». Разберем причины такого поведения платформы 1С:Предприятие и рассмотрим несколько правильных способов вывода года без пробелов.

Почему в значении года появляется пробел

Выясним причину возникновения проблемы. Встроенная функция Год() возвращает значение с типом Число. При передаче числа в строковый параметр макета или неявном преобразовании числа в строку платформа 1С автоматически применяет стандартные региональные установки текущего сеанса. Для русской локализации по умолчанию включено разделение групп разрядов по три цифры.

Важно отметить, что в качестве разделителя групп разрядов платформа использует не стандартный пробел (код 32), а неразрывный пробел (Символы.НПП, код 160). По этой причине стандартная замена подстроки вида СтрЗаменить(Строка(Год), " ", "") не срабатывает, так как ищет обычный пробел.

Для корректного вывода года без лишних символов разберем по шагам доступные варианты решения.

Способ 1. Форматирование даты напрямую через спецификатор даты

Наиболее лаконичный и универсальный способ — не извлекать числовую составляющую года через функцию Год(), а сразу отформатировать исходную дату с помощью встроенной функции Формат() и спецификатора формата даты ДФ.

Посмотрим на пример кода:

Подвал.Параметры.ГодДокумента = Формат(Объект.Дата, "ДФ=yyyy");

Спецификатор yyyy (или его кириллический аналог гггг) возвращает четырехзначный год в виде строки без каких-либо разделителей групп разрядов. Если требуется получить только две последние цифры года, можно использовать формат ДФ=yy или ДФ=гг.

Способ 2. Отключение группировки разрядов для числа

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

Для этого используется параметр ЧГ (группировка цифр целой части). Если указать значение ЧГ=0, разделители групп применяться не будут:

Подвал.Параметры.ГодДокумента = Формат(Год(Объект.Дата), "ЧГ=0");

В результате работы этой функции четырехзначное число будет преобразовано в сплошную строку без неразрывных пробелов.

Способ 3. Настройка формата в свойствах ячейки макета

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

Для настройки ячейки в табличном документе выполним следующие шаги:

  1. Откроем макет печатной формы в конфигураторе и выделим целевую ячейку.
  2. Нажмем клавишу F4 для вызова палитры свойств ячейки.
  3. В свойстве Формат нажмем кнопку выбора с многоточием, чтобы открыть конструктор форматной строки.
  4. Если в параметр передается дата целиком (Подвал.Параметры.ГодДокумента = Объект.Дата;), перейдем на вкладку Дата и укажем формат гггг.
  5. Если в параметр передается число (результат функции Год()), перейдем на вкладку Число и в поле Группировка установим значение 0 (что соответствует формату ЧГ=0).

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

← На главную