Как настроить синхронизацию данных без префикса информационной базы и сохранить сквозную нумерацию в 1С

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

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

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

Влияет ли префикс на регистрацию изменений?

Прежде чем перейти к практическим решениям, проанализируем теоретическую часть вопроса. Беспокоит ли нас то, что отсутствие префикса нарушит механизм регистрации изменений в планах обмена? Нет, не нарушит.

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

Вариант 1. Временная установка префикса и его последующее удаление

Разберем по шагам самый простой и быстрый лайфхак, который отлично работает в конфигурациях на обычных формах (таких как УПП) и позволяет обойти жесткие требования платформы без программирования.

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

Выполним следующие шаги для реализации этого метода:

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

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

Опасность использования префикса "00"

Иногда у разработчиков возникает соблазн указать в качестве префикса информационной базы значение 00 (два нуля), предполагая, что это визуально не нарушит нумерацию. Выясним причину, почему так делать категорически не рекомендуется.

В платформе 1С префикс 00 является зарезервированным системным значением. Он подставляется по умолчанию для организаций, у которых префикс не задан явным образом. Если вы укажете 00 как префикс ИБ, система начнет принудительно добавлять его ко всем создаваемым документам. В сочетании с префиксом конкретной организации (например, ОП) вы получите номера вида ОП00-000123 вместо привычных ОП00000123. Это неизбежно приведет к сдвигу разрядности номеров и нарушению автонумерации в текущем году.

Вариант 2. Программное решение через настройку правил конвертации (ПКО)

Если мы хотим настроить процесс максимально надежно и гарантировать, что загружаемые из 1С:Документооборот контрагенты получат локальные коды базы УПП без префиксов источника, нам потребуется скорректировать правила обмена. Рассмотрим этот процесс подробнее.

Для реализации этого подхода выполним тонкую настройку правил конвертации объектов в программе «1С:Конвертация данных»:

  1. Выгрузим текущие правила обмена из настроек синхронизации и откроем их в конфигурации «Конвертация данных».
  2. Найдем правило конвертации объектов (ПКО) для справочника Контрагенты.
  3. В списке правил конвертации свойств (ПКС) для свойства Код снимем флаг Передавать в приемник. Это предотвратит попытки базы-приемника записать код, сгенерированный в базе-источнике.
  4. Перейдем в обработчики событий ПКО Контрагенты. В обработчике события При загрузке или Перед записью напишем код для принудительной генерации нового кода средствами базы-приемника УПП.

Посмотрим на пример кода, который необходимо добавить в обработчик:


Если Объект.ЭтоНовый() Тогда
    Объект.УстановитьНовыйКод();
КонецЕсли;

Этот код гарантирует, что при создании нового контрагента в УПП система автоматически присвоит ему следующий по порядку свободный код по локальным правилам базы-приемника. При этом существующие контрагенты (сопоставленные по уникальному идентификатору GUID или ИНН/КПП) не изменят свои текущие коды, что полностью исключает порчу справочника.

Вариант 3. Интеграция через HTTP-сервисы или COM-соединение

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

Рассмотрим два наиболее популярных альтернативных сценария:

Сценарий 1. Использование HTTP-сервисов. На стороне УПП мы можем создать простой HTTP-сервис, принимающий JSON-пакет с данными контрагента. В базе 1С:Документооборот в модуле справочника Контрагенты в событии ПриЗаписи настраивается отправка POST-запроса на этот HTTP-сервис. При получении данных УПП создает объект, а платформа автоматически генерирует для него очередной локальный код.

Сценарий 2. Прямое COM-соединение. Мы можем написать регламентное задание на стороне источника, которое периодически подключается к базе УПП через COMConnector. Обработка выбирает новых контрагентов и создает их напрямую в приемнике.

Посмотрим на пример кода для создания объекта через COM-соединение:


// Пример создания контрагента в приемнике через COM-соединение
НовыйКонтрагент = БазаПриемник.Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = "Наименование из ДО";
НовыйКонтрагент.ИНН = "1234567890";
НовыйКонтрагент.Записать(); // Код будет присвоен автоматически базой УПП

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

Выбор конкретного решения зависит от долгосрочных планов развития вашей системы. Если в будущем планируется расширение обмена другими типами документов, лучше остановиться на Варианте 1 или Варианте 2. Если обмен ограничится только контрагентами — смело используйте легкую интеграцию через веб-сервисы.

← На главную