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

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

В процессе разработки часто возникает задача по управлению форматом номера документа. Нередко разработчики сталкиваются с ситуацией, когда при программной установке номера через метод УстановитьНовыйНомер() к желаемому префиксу организации неожиданно добавляется префикс информационной базы. В итоге вместо ожидаемого формата «ФГ-00000001» мы получаем «00-ФГ000001», где «00» — это префикс, заданный в настройках обмена данными.

Понимание механизмов префиксации в 1С

Для решения этой задачи важно понять, почему система ведет себя именно так. Типовые конфигурации (особенно 1С:ERP, 1С:УТ, 1С:КА) используют встроенную подсистему префиксации. Когда вы вызываете УстановитьНовыйНомер(Префикс), платформа и типовой код автоматически сцепляют префикс информационной базы, префикс организации и порядковый номер.

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

Способ 1: Настройка параметров информационной базы

Прежде чем менять код, необходимо убедиться, что проблема не решается на уровне настроек пользователя или администратора. Часто «лишний» префикс берется из настроек синхронизации данных. Рассмотрим путь к решению:

  1. Откройте раздел Администрирование.
  2. Перейдите в пункт Синхронизация данных.
  3. Найдите поле Префикс этой информационной базы.

Если префикс ИБ установлен, платформа принудительно добавляет его ко всем новым номерам документов. Если бизнес-логика вашей задачи допускает работу без этого префикса, его можно удалить или изменить в настройках. Это наиболее чистый путь, не требующий написания кода.

Способ 2: Использование расширений для управления нумерацией

Если настройка параметров не подходит (например, префикс ИБ необходим для обменов, но вы хотите изменить порядок или формат вывода для конкретных документов), рекомендуется использовать механизм Расширений конфигурации. Это позволяет сохранить обновляемость основной конфигурации.

Разберем, как это реализовать:

  1. Создайте новое расширение конфигурации.
  2. Найдите подписку на событие, которая отвечает за установку нового номера (как правило, это событие ПриУстановкеНовогоНомера).
  3. Создайте обработчик этой подписки в расширении с использованием аннотации &Вместо.

Внутри обработчика вы можете реализовать собственную логику формирования строки номера:


// Пример логики в расширении
&Вместо("ПриУстановкеНовогоНомера")
Процедура ИмяПодписки_ПриУстановкеНовогоНомера(Источник, СтандартнаяОбработка, Префикс)
    // Отменяем стандартную логику, если нужно полностью переопределить формирование
    СтандартнаяОбработка = Ложь;
    
    // Формируем номер вручную с учетом ваших требований
    НовыйНомер = МояФункцияГенерацииНомера(Источник, Префикс);
    Источник.Номер = НовыйНомер;
КонецПроцедуры

Особенности при загрузке данных

Автор вопроса упоминал использование ОбменДанными.Загрузка = Истина. Это важный технический момент. Когда установлен этот флаг, механизмы контроля нумерации могут работать в упрощенном режиме или вовсе пропускать стандартные алгоритмы префиксации.

Если вы выполняете загрузку данных, помните следующее:

Заключение и рекомендации

Проанализировав ситуацию, мы пришли к выводу, что правильный путь решения задачи — это разделение ответственности между настройками системы и кодом расширения:

Следуя этим шагам, вы сможете добиться нужного формата номера «ФГ-00000001», сохранив при этом чистоту кода и стабильность системы при будущих обновлениях.

← На главную