Администрирование · 11 мин
Как убрать лидирующие нули в номере документа в 1С
Как убрать лидирующие нули в номере документа в 1С: настройка нумератора, обработка номеров, типовые и программные способы, риски и проверка результата.
Лидирующие нули в номерах документов 1С — это не ошибка, а следствие работы механизма нумерации: платформа выравнивает номер до фиксированной длины, добавляя нули слева. Например, вместо «125» вы видите «000000125». Для внутреннего учёта это обычно не мешает, но при обмене с контрагентами, выгрузке в другие системы или печати документов «лишние» нули часто становятся проблемой.
Убрать лидирующие нули можно несколькими способами: изменить настройки нумератора, скорректировать формат вывода номера на печать, обработать уже существующие номера или изменить код, формирующий номер при обмене. Выбор зависит от того, где именно нули мешают — в базе, в печатной форме или только в выгрузке.
Перед любыми изменениями важно сделать резервную копию информационной базы. Массовое изменение номеров документов — необратимая операция, и если что-то пойдёт не так, восстановить связи и историю без копии будет сложно.
Почему в номере документа появляются лидирующие нули
В типовых конфигурациях 1С номер документа имеет строковый тип с фиксированной длиной, например 11 символов. Платформа автоматически дополняет номер нулями слева, чтобы длина всегда была одинаковой. Это нужно для корректной сортировки: строки «11» и «9» при лексикографическом сравнении расположились бы «неправильно», а «00000000011» и «00000000009» сортируются в ожидаемом порядке.
Дополнительно номер может содержать префикс организации или информационной базы — например, «УТ00-000123». Префикс нужен при обмене данными между базами, чтобы номера не пересекались. При такой структуре нули становятся ещё заметнее, а желание от них избавиться — понятнее.
Важно понимать: сами по себе нули не являются дефектом. Проблема возникает только там, где номер покидает 1С — в печатных формах, электронном документообороте, выгрузках на сайт или в банковские системы, где контрагент ожидает «короткий» номер.
Как убрать нули для новых документов через настройки нумерации
Самый безопасный способ — изменить настройки нумерации так, чтобы новые документы получали номера без нулей. В типовых конфигурациях (например, «1С:Бухгалтерия», «Управление торговлей») для многих видов документов доступна настройка нумерации через раздел администрирования.
Откройте настройки нумерации документов (путь зависит от конфигурации: обычно «Администрирование» → «Настройки нумерации» или аналогичный раздел). Для нужного вида документов укажите, что номер не должен дополняться нулями, если такая опция предусмотрена. В части конфигураций доступен выбор формата номера и поведения префикса.
Обратите внимание: изменение настроек действует только на новые документы. Ранее созданные документы сохранят свои номера с нулями — их придётся обрабатывать отдельно.
- 1Сделайте резервную копию информационной базы
- 2Откройте раздел настроек нумерации документов в вашей конфигурации
- 3Найдите нужный вид документов и измените параметры формирования номера
- 4Создайте тестовый документ и проверьте вид нового номера
- 5Проверьте печатную форму и выгрузку, где номер покидает 1С
Как убрать нули в уже существующих документах
Если документы с «длинными» номерами уже созданы, потребуется групповая обработка. В типовых конфигурациях на базе БСП (Библиотека стандартных подсистем) есть обработка «Групповое изменение реквизитов», но для номеров она подходит ограниченно — корректнее использовать специализированные механизмы.
Распространённый подход — внешняя обработка, которая проходит по документам выбранного вида за период, вычисляет числовое значение номера и записывает его без лидирующих нулей. Такую обработку можно написать самостоятельно или адаптировать готовую под свою конфигурацию.
Пример логики на встроенном языке: извлечь из строки номера числовую часть, преобразовать её в число (это автоматически отбрасывает нули), затем записать обратно как строку. При наличии префикса его нужно отделить, обработать числовую часть и собрать номер заново.
// Упрощённый пример: убрать нули из числовой части номера
НомерСтрокой = Документ.Номер; // например "000000125"
ЧисловаяЧасть = Число(НомерСтрокой); // 125
НовыйНомер = Формат(ЧисловаяЧасть, "ЧГ="); // "125"
Документ.Номер = НовыйНомер;
Документ.Записать();
Этот код — лишь иллюстрация принципа. В реальной обработке нужно учесть префиксы, нечисловые номера, контроль уникальности и запись в транзакции. Если вы не уверены в своих силах, поручите доработку специалисту по 1С.
Как убрать нули только в печатных формах
Часто менять номера в базе не нужно и даже вредно — достаточно, чтобы на печать выводился «короткий» номер. В типовых конфигурациях для этого уже есть механизм: функция получения номера на печать, которая отсекает лидирующие нули и ненужные префиксы.
В конфигурациях на БСП используется функция вида «ПолучитьНомерНаПечать» (в новых версиях — методы модуля менеджера документа или стандартные подсистемы печати). Если ваша печатная форма выводит номер с нулями, проверьте, используется ли в макете именно этот механизм, а не прямой вывод реквизита «Номер».
Для самописных или доработанных печатных форм замените прямое обращение к номеру на форматирование: преобразуйте номер в число и обратно, либо используйте строковые функции для удаления нулей слева. Проверьте результат на документах с префиксом и без него.
Как убрать нули при обмене и выгрузке данных
Если нули мешают в обмене — например, при выгрузке заказов на сайт или в систему электронного документооборота, — корректировать номер нужно в правилах обмена или в коде выгрузки, а не в базе. Так вы сохраните целостность данных в 1С и при этом отдадите наружу номер в нужном формате.
В типовых правилах конвертации данных (КД) для реквизита «Номер» можно добавить обработчик «Перед выгрузкой», в котором номер преобразуется: отбрасываются лидирующие нули и, при необходимости, префикс. В планах обмена с аналогичным эффектом работают подписки на события или переопределяемые процедуры формирования данных.
Учтите обратную сторону: если внешняя система потом присылает документ обратно с «коротким» номером, механизм поиска в 1С должен уметь находить документ по такому номеру. Иначе при загрузке будут создаваться дубли.
Сравнение подходов
Подходит для новых документов; не трогает существующие; ограничена возможностями конфигурации
Решает проблему для старых документов; рискованна при обменах и требует резервной копии
Самый безопасный; работает только в печатных формах, в базе нули остаются
Корректен для интеграций; требует доработки правил и проверки обратной загрузки
Риски, ограничения и проверка результата
Главный риск перенумерации — нарушение уникальности. Если в базе уже есть номер «125» и вы обрезаете нули у «000000125», при записи возникнет конфликт. Обработка должна заранее проверять, не занят ли целевой номер, и пропускать такие документы с записью в журнал.
Второй риск — ссылки на номер вне базы: письма контрагентам, акты сверки, бумажные оригиналы. После изменения номера документа старые ссылки на него перестанут быть точными. Поэтому массовую перенумерацию логично совмещать с началом нового периода нумерации — например, нового года или квартала.
После любых изменений проверьте результат по контрольным точкам: вид номера в списке документов, печатная форма, выгрузка в смежную систему, отсутствие ошибок записи и дублей.
Как проверить результат
Отображается без лидирующих нулей, сортировка корректна
Номера с нулями остались или появились дубли номеров
На печать выводится короткий номер без префикса (если он не нужен)
Нули видны на печати
Документ записывается без ошибок уникальности
Ошибка «Значение поля Номер не уникально»
Выгружается короткий номер, обратная загрузка находит документы
Документы не сопоставляются, создаются дубли
Типичные ошибки при удалении лидирующих нулей
Самая частая ошибка — попытка «вычесть нули» простым сокращением строки слева без учёта префикса. Если номер имеет вид «УТ00-000123», наивное удаление нулей может испортить и префикс. Сначала отделите префикс, потом обрабатывайте числовую часть.
Вторая ошибка — изменение длины номера в конфигураторе без анализа последствий. Уменьшение длины реквизита «Номер» приведёт к усечению существующих значений при реструктуризации базы, а это потеря данных. Перед таким изменением номера нужно предварительно привести к новой длине обработкой.
Третья ошибка — забыть про нумерацию по организациям. Если в базе несколько организаций с отдельными нумераторами, обработка должна учитывать принадлежность документа, иначе у разных организаций появятся одинаковые номера.
Часто задаваемые вопросы
Можно ли убрать лидирующие нули без программирования?
Частично. Для печатных форм в типовых конфигурациях нули обычно уже отсекаются штатным механизмом «номер на печать». Для новых документов проверьте настройки нумерации в разделе администрирования. Массовое изменение существующих номеров без обработки или доработки, как правило, невозможно.
Нарушит ли удаление нулей нумерацию и сортировку документов?
При строковом типе номера сортировка «коротких» номеров может стать неожиданной: «100» окажется раньше «99». Если это критично, оставляйте нули в базе, а «короткий» номер формируйте только на печати и при выгрузке.
Что делать, если после обработки появились дубли номеров?
Дубли возникают, когда целевой номер уже занят. Восстановите базу из резервной копии и доработайте обработку: перед записью проверяйте существование документа с таким номером и пропускайте конфликтные случаи, фиксируя их в журнале для ручного разбора.
Нужно ли убирать нули в номерах счетов-фактур?
Номер счёта-фактуры указывается в книге покупок и продаж и участвует в обмене с контрагентами. Менять его следует крайне осторожно и только до передачи документа контрагенту. На печати нули обычно убираются штатным механизмом без изменения данных.
Как убрать нули только у одного вида документов?
В настройках нумерации и в обработке перенумерации укажите конкретный вид документов и, при необходимости, период и организацию. Не запускайте обработку по всем документам базы — это увеличивает риск и время выполнения.
Почему после выгрузки на сайт номер снова с нулями?
Потому что преобразование нужно выполнять в правилах или коде обмена, а не только в базе. Если вы изменили номера в 1С, но сайт получает данные через правила, которые формируют номер заново, добавьте в них обработчик, отсекающий лидирующие нули.
Что важно запомнить
Лидирующие нули — следствие фиксированной длины номера в 1С. Для новых документов настройте нумерацию, для печати используйте форматирование номера, для обмена — преобразование в правилах. Массовую перенумерацию существующих документов выполняйте только после резервного копирования и с контролем уникальности.