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

Администрирование · 11 мин

Публичные идентификаторы синхронизируемых объектов 1С: для чего нужны и как работают

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

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

Публичный идентификатор — это общий «паспорт» объекта, единый для всех баз, участвующих в обмене. Он формируется при первой отправке объекта через план обмена и далее передаётся вместе с данными. Принимающая база по этому идентификатору ищет у себя уже сопоставленный объект и, если находит, обновляет его, а не создаёт дубль.

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

Что такое публичный идентификатор синхронизируемого объекта

Каждый объект в информационной базе 1С имеет внутреннюю ссылку с уникальным идентификатором (GUID). Этот GUID формируется в момент создания объекта и уникален только в пределах конкретной базы. Если один и тот же контрагент создан независимо в двух базах, его GUID в них будет разным.

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

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

Как механизм работает при обмене данными

При отправке объекта через план обмена система проверяет, зарегистрирован ли для него публичный идентификатор. Если объект отправляется впервые, идентификатор формируется и записывается в регистр сопоставления. В сообщение обмена уходит не внутренняя ссылка, а именно публичный идентификатор вместе с данными объекта.

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

Как проходит сопоставление при обмене
  1. 1
    Отправляющая база формирует сообщение обмена с публичными идентификаторами объектов
  2. 2
    Принимающая база ищет каждый идентификатор в регистре сопоставления
  3. 3
    При найденном соответствии объект обновляется, при отсутствии — ищется по полям поиска или создаётся новый
  4. 4
    Новое соответствие фиксируется в регистре и используется при следующих обменах

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

Где хранятся и как посмотреть идентификаторы

В конфигурациях на базе БСП (Управление торговлей, Бухгалтерия предприятия, ERP и другие) сопоставления хранятся в регистрах сведений, предназначенных для публичных идентификаторов синхронизируемых данных. Найти их можно через «Все функции» → «Регистры сведений» по словам «сопоставление» или «публичные идентификаторы». Отбор по конкретному узлу обмена покажет все связи, действующие для этого направления синхронизации.

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

bsl
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 100 Сопоставление.УзелИнформационнойБазы, Сопоставление.УникальныйИдентификаторПриемника, Сопоставление.УникальныйИдентификаторИсточника ИЗ РегистрСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов КАК Сопоставление");

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

Типичные проблемы и их причины

Самая частая жалоба — дубли контрагентов и номенклатуры после обмена. Причина почти всегда одна: объекты в двух базах не были сопоставлены на старте, и принимающая сторона создала новые элементы со своими публичными идентификаторами. Дальше система честно обновляет «свои» объекты, а исходные так и остаются непривязанными.

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

Дубли объектовВ одной или обеих базах появляются одинаковые элементы

Проверить регистр сопоставления: есть ли связи для обоих экземпляров

Объект не обновляетсяИзменения из другой базы не применяются

Проверить, существует ли запись сопоставления для данного узла обмена

Объект ссылается не тудаДокумент подтягивает другого контрагента

Проверить, не привязан ли публичный идентификатор к неверному объекту

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

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

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

Типичные ошибки при работе с сопоставлением
01
Пропуск шага первоначального сопоставления — система создаёт объекты по полям поиска, и часть связей устанавливается неверно
02
Удаление дублей до переноса ссылок — документы остаются с битыми ссылками на удалённый объект
03
Правка регистра сопоставления вручную без копии базы — при ошибке связи восстановить нечем
04
Одновременная работа двух обменов с одной базой — конкурирующие записи сопоставления конфликтуют

Когда идентификаторы формируются по-разному: варианты обмена

Поведение механизма зависит от способа обмена. При синхронизации через правила конвертации (Конвертация данных 2.0/3.0, EnterpriseData) публичный идентификатор обычно совпадает с GUID объекта-источника, а сопоставление ведётся по правилам поиска, заданным в правилах обмена. При универсальном обмене через планы обмена БСП регистрация и сопоставление полностью автоматизированы.

Варианты организации сопоставления

Автоматическое сопоставление при первой синхронизации

Подходит для новых баз с небольшим числом объектов; ограничение — возможны неверные связи при неоднозначных полях поиска

Ручное сопоставление на старте

Подходит для баз с накопленными данными; требует времени, но даёт точный контроль связей

Перенос с сохранением GUID

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

Выбор варианта определяется состоянием баз на момент настройки. Если обе базы уже наполнены независимо введёнными данными, без ручного этапа сопоставления обойтись сложно. Если одна база пустая или данные переносятся впервые, автоматика справится сама.

Как проверить, что синхронизация работает корректно

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

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

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

Несопоставленные объекты в мониторе синхронизации
Норма

Список пуст или содержит только осознанно отложенные элементы

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

Массово растёт число несопоставленных объектов после каждого обмена

Обновление тестового объекта
Норма

Изменение применяется к тому же объекту в другой базе

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

Создаётся новый объект с похожими данными

Записи регистра сопоставления
Норма

Каждому публичному идентификатору соответствует существующая ссылка

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

Есть записи с битыми или пустыми ссылками

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

Итог

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

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

Часто задаваемые вопросы

Чем публичный идентификатор отличается от GUID объекта?

GUID — внутренний идентификатор объекта в конкретной базе, он уникален только в ней. Публичный идентификатор — общий ключ для всех баз обмена, который связывает разные GUID одного логического объекта. Часто публичный идентификатор совпадает с GUID объекта из базы-источника, но это не обязательно: связь всегда определяется записями в регистре сопоставления.

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

Технически можно, но последствия существенные: при следующем обмене система начнёт сопоставлять объекты заново по полям поиска. Такой шаг оправдан только при полном перезапуске обмена и обязательно после резервного копирования обеих баз.

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

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

Где посмотреть несопоставленные объекты в типовой конфигурации?

В разделе настройки синхронизации данных откройте нужный обмен и перейдите к результатам сопоставления или монитору синхронизации: там отображаются объекты, для которых соответствие ещё не установлено, с возможностью связать их вручную.

Влияет ли изменение правил обмена на существующие идентификаторы?

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

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

Такая ситуация возникает при параллельных обменах или ошибках ручной правки регистра. Определите корректную связь через историю обменов, удалите лишнюю запись сопоставления (предварительно сделав копию базы) и выполните контрольный обмен, чтобы убедиться, что объект обновляется корректно.