Как выводить число с ведущими нулями в 1С?

Программист IT и автоматизация бизнеса
← На главную

При разработке в 1С разработчики часто сталкиваются с задачей сохранения лидирующих нулей при преобразовании данных. Например, при конвертации строки "0005" с помощью функции Число() платформа возвращает значение 5. Рассмотрим, почему это происходит и как правильно получить значение вида "0005".

Причина поведения платформы 1С

Выясним причину, почему ведущие нули пропадают. В платформах 1С примитивный тип данных Число хранит исключительно математическое числовое значение. С точки зрения системы значения 5, 05 и 0005 бинарно и математически абсолютно идентичны.

Функция Число() выполняет явное приведение типа к числовому, в результате чего все незначащие лидирующие нули автоматически отбрасываются. Если вам необходимо сохранить нули (например, для кодов справочников, номеров документов или артикулов), такое значение должно храниться или выводиться как Строка.

Решение 1. Использование функции Формат()

Для преобразования числа в строку с нужной длиной и ведущими нулями используется встроенная функция Формат(). Проанализируем пример ее использования:


ИсходноеЧисло = 5;
РезультатСтрока = Формат(ИсходноеЧисло, "ЧЦ=4; ЧВН=; ЧГ=");
// Результат: "0005"

Разберем параметры форматной строки подробнее:

  1. ЧЦ=4 — задает общую длину числового поля (число целых разрядов).
  2. ЧВН= — флаг вывода незначащих нулей. При наличии этого параметра платформе указывается заполнять свободные разряды слева нулями.
  3. ЧГ= — отключает группировку разрядов (убирает пробелы-разделители тысяч).

Решение 2. Дополнение строки с помощью функций Прав() и СокрЛП()

Если требуется получить строковое представление заданной длины без применения форматной строки, рассмотрим альтернативный вариант с использованием функции Прав():


ИсходнаяСтрока = "5";
РезультатСтрока = Прав("0000" + СокрЛП(ИсходнаяСтрока), 4);
// Результат: "0005"

В этом случае мы прибавляем необходимое количество нулей слева и отсекаем с помощью Прав() нужную длину символов справа.

Решение 3. Использование Библиотеки Стандартных Подсистем (БСП)

Если разработка ведется в типовой конфигурации, где подключена БСП, то разберем готовый вариант функции из общего модуля:


РезультатСтрока = СтроковыеФункцииКлиентСервер.ДополнитьСтроку("5", 4, "0", "Слева");
// Результат: "0005"

Отображение нулей на формах без изменения типа

Если реквизит должен оставаться типом Число для участия в математических расчетах, но пользователю на форме необходимо показывать ведущие нули, задайте параметр в свойстве Формат элемента формы (поля ввода или колонки таблицы): ЧЦ=4; ЧВН=; ЧГ=0. В базе данных значение сохранится как 5, а визуально будет отображаться как 0005.

← На главную