К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как добавить нули в 1С: практическое руководство

Как добавить нули в 1С: ведущие нули в кодах справочников, номерах документов и строках. Формат(), функции дополнения строки, настройка нумераторов и типовые ошибки.

Задача «добавить нули» в 1С возникает в нескольких типовых ситуациях: нужно вывести код или номер с ведущими нулями (0000123 вместо 123), дополнить строку нулями до фиксированной длины для обмена с банком или ЭДО, исправить нумерацию документов или справочника. Каждый случай решается своим способом — от функции Формат() до штатных механизмов нумераторов и обработок группового изменения.

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

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

Определите, где именно нужны нули

Прежде чем что-то менять, ответьте на вопрос: нули нужны только на экране и в печатной форме или физически в базе данных? От ответа зависит весь дальнейший путь. Форматирование при выводе не трогает данные и не ломает ссылки — это всегда предпочтительный вариант. Изменение хранимых кодов и номеров затрагивает нумерацию, обмены с другими системами и уже выданные документы.

Типичные сценарии: выгрузка в банк-клиент требует номер счёта или документа фиксированной длины; контрагент просит счета-фактуры с номером вида 000001; штрихкоды и артикулы должны иметь фиксированную длину; коды справочника «Номенклатура» «съехали» после переноса данных. В первых трёх случаях почти всегда достаточно форматирования строки.

Маршрут решения

Как выбрать действие

Нули нужны только в отчёте, печатной форме или файле выгрузкиИспользуйте Формат() или дополнение строки — данные в базе не трогайте
Номера документов должны храниться с нулями и участвовать в нумерацииНастройте длину и тип номера в конфигураторе, при необходимости перенумеруйте
Коды справочника потеряли нули после загрузки из ExcelПроверьте тип кода (число/строка) и при необходимости перезаполните коды обработкой

Вывод числа с ведущими нулями через Формат()

Самый простой и безопасный способ — функция встроенного языка Формат(). Она преобразует число в строку заданного вида, не изменяя исходное значение. Ключевые параметры: ЧЦ — общая длина строки, ЧВН — признак дополнения ведущими нулями.

Пример: Формат(123, "ЧЦ=8; ЧВН=") вернёт строку «00000123». Если убрать ЧВН, число дополнится пробелами слева, что для выгрузок обычно неприемлемо. Пустое значение после «ЧВН=» — это нормально, параметр работает как флаг.

bsl
НомерСтрокой = Формат(НомерДокумента, "ЧЦ=10; ЧВН=");
// Результат: "0000000123"
Сообщить(НомерСтрокой);

В макетах печатных форм и СКД формат можно задать без кода: в свойствах ячейки макета или поля набора данных есть свойство «Формат», куда вписывается та же строка ЧЦ=10; ЧВН=. Это удобно, когда правится типовая печатная форма через расширение или внешнюю печатную форму.

Дополнение строки нулями до нужной длины

Если исходное значение уже строка (например, строковый код справочника или номер, прочитанный из файла), Формат() не подойдёт — нужно дополнить строку вручную. Классический приём: прибавить значение к строке из нулей и взять правые символы через функцию Прав().

bsl
КодСтрокой = "457";
Длина = 8;
Результат = Прав("000000000000" + КодСтрокой, Длина);
// Результат: "00000457"

Этот способ работает и с буквенно-цифровыми кодами: нули добавятся слева, а содержимое сохранится. Следите только за тем, чтобы строка-«заполнитель» из нулей была не короче целевой длины, иначе Прав() обрежет исходное значение. Более надёжный вариант — цикл или функция, которая добавляет нули, пока СтрДлина() меньше нужной.

В типовых конфигурациях часто есть готовые функции общих модулей, например дополнение строки символом до заданной длины в составе БСП (Библиотека стандартных подсистем). Перед написанием своей функции проверьте наличие типовой — это снижает риск расхождений при обновлениях.

Настройка длины и типа кода/номера в конфигураторе

Когда нули должны храниться в базе, отправная точка — свойства объекта метаданных. У справочников и документов в конфигураторе задаются: тип кода/номера (число или строка), длина, признаки автонумерации и контроля уникальности. Именно тип определяет, возможны ли ведущие нули в принципе.

Числовой код физически не хранит ведущие нули: 000123 и 123 для платформы — одно и то же число. Если нули обязательны, тип должен быть строкой с достаточной длиной. При этом автонумерация для строковых кодов тоже работает, но платформа подбирает следующее значение иначе, чем для чисел, и при смешанных данных (часть кодов с нулями, часть без) возможны сюрпризы вроде дублирования.

Порядок настройки в конфигураторе
  1. 1
    Откройте свойства справочника или документа, закладка «Нумерация» (или «Данные» для кода)
  2. 2
    Установите тип кода/номера «Строка» и длину, достаточную с учётом нулей
  3. 3
    Включите автонумерацию и контроль уникальности
  4. 4
    Обновите конфигурацию базы данных (F7) в монопольном режиме
  5. 5
    Проверьте создание нового элемента: код должен формироваться с ведущими нулями

Изменение типа с числа на строку — реструктуризация: платформа преобразует существующие значения. На больших таблицах это занимает заметное время и требует монопольного доступа. Существующие числовые коды при этом станут строками без нулей («123»), то есть старые данные придётся дополнять отдельной обработкой.

Исправление существующих кодов и номеров

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

Для документов учитывайте периодичность нумерации и префиксы: в типовых конфигурациях номер часто формируется механизмом префиксации (префикс организации, базы, узла обмена), и вручную «вклиниваться» в эту схему опасно. Если задача — только красивый вывод на печать, ограничьтесь форматной строкой в макете, а номер в базе не трогайте.

После перенумерации проверьте: отсутствие дублей (контроль уникальности должен быть включён), корректность следующего автоматически присваиваемого номера, целостность обменов. Если база участвует в РИБ или синхронизации с другими программами, согласуйте изменение номеров с администратором обмена — иначе возможны коллизии.

Нули при обмене, выгрузке и печати

Отдельный класс задач — требования внешних систем. Банковские форматы, ЭДО, маркировка и государственные порталы нередко требуют поля фиксированной длины с дополнением нулями слева. Здесь правильное место для дополнения — момент формирования файла или печатной формы, а не хранение.

Практическое правило: в базе храните «естественное» значение (число или короткую строку), а нули добавляйте в коде выгрузки через Формат() или Прав(). Тогда при изменении требований внешней системы достаточно поправить одно место в обработке, а не перекраивать данные.

Контрольные точки

Как проверить результат

Строка после форматирования
Норма

Длина равна заданной, исходные цифры в конце без изменений

Тревожный признак

Обрезаны старшие разряды или вместо нулей пробелы

Новые коды справочника
Норма

Автонумерация продолжается с нулями, дублей нет

Тревожный признак

Создаются дубли или код без нулей

Печатная форма документа
Норма

Номер выводится с нужным количеством нулей

Тревожный признак

Номер обрезан или отличается от выгружаемого в ЭДО

Типичные ошибки и ограничения

Самая частая ошибка — попытка хранить ведущие нули в числовом поле. Число не может содержать ведущих нулей по определению; сколько ни меняй отображение, при записи числа 000123 оно станет 123. Если нули значимы (например, это часть артикула), поле должно быть строковым.

Вторая ошибка — смешение подходов: часть документов перенумеровали с нулями, часть осталась без, итоговая сортировка и поиск по номеру стали непредсказуемыми. Строковая сортировка ставит «000123» и «123» в разные места. Если уж решили хранить нули, приведите к единому формату все записи периода.

Типичные ошибки
01
Попытка сохранить ведущие нули в числовом коде — нули теряются при записи
02
Изменение номеров уже отправленных по ЭДО документов — расхождения с контрагентами
03
Дополнение строки через СокрЛП без контроля длины — обрезание длинных значений
04
Забытый параметр ЧВН в Формат() — число дополняется пробелами, выгрузка отклоняется
05
Перенумерация без резервной копии — невозможность отката при ошибке

FAQ

Почему 1С убирает нули в начале кода?

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

Как вывести номер документа с нулями только в печатной форме?

В макете печатной формы откройте свойства ячейки с номером и в поле «Формат» укажите, например, ЧЦ=8; ЧВН=. Либо в коде формирования формы присвойте параметру значение Формат(Номер, "ЧЦ=8; ЧВН="). Данные в базе при этом не меняются.

Можно ли добавить нули к кодам всего справочника сразу?

Да, обработкой группового изменения реквизитов или собственной обработкой: для каждого элемента вычислите новый код как Прав("0000000000" + СтарыйКод, НужнаяДлина) и запишите. Перед запуском сделайте резервную копию и убедитесь, что тип кода — строка достаточной длины.

Что делать, если после загрузки из Excel коды потеряли нули?

Excel при вставке данных часто преобразует «000123» в число 123. Исправьте исходный файл: задайте текстовый формат столбца до вставки значений, затем загрузите заново. Если данные уже в базе, дополните коды нулями обработкой, как описано выше.

Опасно ли менять нумерацию документов в работающей базе?

Да, если менять номера уже использованных документов: они фигурируют в печатных формах, ЭДО и отчётности, и расхождения приведут к проблемам с контрагентами и проверяющими. Безопасный вариант — менять только отображение номера, а не его значение, либо настраивать нумерацию до начала ведения учёта.

Итог

Что важно запомнить

Ведущие нули в 1С — это либо форматирование при выводе (Формат с ЧЦ и ЧВН, дополнение строки через Прав), либо строковый тип кода/номера в конфигураторе. Числовые поля нули хранить не могут. Массовое изменение существующих номеров делайте только после резервной копии и с проверкой уникальности.