Зачем нужно тире в нумерации документов в 1С:Бухгалтерии 3.0 и как устроена автонумерация?

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

При переносе данных из других конфигураций или при интеграции внешних систем с 1С:Бухгалтерия 3.0 (БП 3.0) разработчики часто сталкиваются с особенностями автонумерации документов. Один из типичных вопросов: почему в стандартных номерах документов на пятом символе всегда стоит дефис (тире) и какую практическую роль он выполняет? Попробуем разобраться в этом вопросе подробно.

Структура номера документа в БП 3.0

Рассмотрим структуру номера, принятую в Библиотеке стандартных подсистем (БСП), которая является технологической основой для 1С:Бухгалтерии 3.0. Стандартный номер документа состоит из 11 символов и имеет следующий вид: ХХХХ-000001.

Разберем эту структуру по шагам:

  1. Первые два символа (1 и 2): Префикс организации. Он настраивается в карточке организации для разделения документооборота разных юридических лиц в одной базе данных.
  2. Следующие два символа (3 и 4): Префикс информационной базы. Он используется при распределенной базе данных (РИБ) или обмене данными для исключения конфликтов нумерации.
  3. Пятый символ: Дефис (-). Он выступает в роли жесткого разделителя.
  4. Оставшиеся символы: Собственно числовой номер документа (значащая часть с лидирующими нулями).

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

Зачем нужен дефис на пятой позиции?

Символ дефиса выполняет в системе две важнейшие функции:

1. Корректный вывод номера на печать
Бухгалтерам и клиентам не нужно видеть технические префиксы базы и организации в печатных формах (например, в УПД, счетах-фактурах или накладных). Специальный алгоритм БСП (в частности, функция ПрефиксацияОбъектовКлиентСервер.НомерНаПечать()) автоматически анализирует номер документа. Он находит дефис, отсекает все символы слева от него вместе с самим дефисом, а также убирает лидирующие нули в оставшейся цифровой части. Если нарушить эту структуру и убрать дефис, система не сможет корректно выделить значащую часть, и в печатные формы попадет полный технический номер со всеми служебными префиксами.

2. Работа механизма автонумерации платформы
Платформа «1С:Предприятие» при создании нового документа пытается автоматически продолжить нумерацию. Для этого она анализирует существующие номера справа налево до первого нецифрового символа, чтобы определить число, которое нужно увеличить на единицу. Стандартный дефис служит четкой границей для платформы. Если изменить формат номера вручную (например, убрать дефис или вставить букву в неустановленное место), платформа может потерять ориентир. Это приводит к сбросу нумерации, ошибкам нарушения уникальности номеров или невозможности записать новый документ при ручном вводе.

Рекомендации по реализации переноса документов с разделением по типам

Если перед нами стоит задача объединить при переносе несколько разных видов документов-источников в один вид документа в БП 3.0 (например, в «Реализацию товаров и услуг») и при этом важно сохранить идентификацию источника по номеру, рассмотрим правильные архитектурные варианты решения этой задачи.

Вариант 1. Кодирование источника в начале значащей части номера

Мы можем вставить буквенный идентификатор источника сразу после стандартного дефиса. В этом случае структура номера будет выглядеть следующим образом: 0000-А000001 для одного источника и 0000-Б000001 для другого.

Проанализируем этот подход:

Вариант 2. Использование пользовательских префиксов БСП

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

Рассмотрим пример кода, который можно использовать в подписке на событие ПриУстановкеНовогоНомера или в общем модуле ПрефиксацияОбъектовПереопределяемый в процедуре ПриИзмененииНомера:


Процедура ПриУстановкеНовогоНомераДокумента(Источник, СтандартнаяОбработка, Префикс) Экспорт
    // Добавляем к стандартному префиксу организации и ИБ наш символ источника
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
        Если Источник.ЭтоНовый() Тогда
            // Например, определяем символ "А" или "Б" в зависимости от реквизитов заполнения
            СимволИсточника = "А"; 
            Префикс = Префикс + СимволИсточника;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

При таком подходе буква-префикс войдет в четырехсимвольную префиксную часть перед дефисом, сохранив работоспособность всех типовых механизмов платформы и печати.

Вариант 3. Хранение признака источника в дополнительном реквизите

Самый надежный и чистый способ с точки зрения методологии 1С — вообще не трогать типовую нумерацию БП 3.0. Вместо кодирования типа источника в текстовом номере рекомендуется использовать механизм дополнительных реквизитов и сведений. Создайте дополнительный реквизит для документа «Реализация товаров и услуг» (например, «Тип документа-источника») и записывайте информацию туда. Это гарантированно убережет базу от сбоев автонумерации и позволит легко строить любые отчеты в разрезе систем-источников.

← На главную