Синхронизация данных между различными информационными базами «1С:Предприятие» — одна из самых распространенных и в то же время ответственных задач для разработчика. Часто возникает вопрос: как обеспечить целостность данных и избежать дублирования, особенно когда речь идет о таких важных справочниках, как Номенклатура. Рассмотрим подробнее механизмы сопоставления объектов и разберем кейс по быстрой настройке регистрации объектов для обмена и автоматизации заполнения регистров соответствия.
В классических обменах, построенных на технологии «Конвертация данных 2.1», ключевую роль играет регистр сведений СоответствиеОбъектовИнформационныхБаз. Проанализируем ситуацию: когда объект передается из базы А в базу Б, принимающая сторона должна «понять», есть ли у нее уже такой объект или его нужно создать. Если объект создается с новым уникальным идентификатором (GUID), система записывает связь между GUID базы А и GUID базы Б в этот регистр.
Важный момент: если вы хотите, чтобы в базе А также появилась информация о соответствии, необходимо настроить двусторонний обмен. Разберем по шагам, как это работает в стандартных планах обмена:
Таким образом, нам не нужно вручную добавлять булевы реквизиты или придумывать сложные «ответные» сообщения — платформа и БСП делают это в рамках стандартного цикла квитирования. В сложных случаях, когда базы имеют различия в структуре, может быть использована адаптивная выгрузка и загрузка данных XML, которая позволяет гибко сопоставлять данные между не полностью идентичными конфигурациями.
Одним из самых простых и эффективных способов упростить взаимодействие баз является использование одинаковых уникальных идентификаторов. Если объект в базе Б создается с тем же UUID, что и в базе А, необходимость в регистре соответствий часто отпадает, так как поиск по идентификатору всегда будет успешным.
Выясним причину, почему это не происходит автоматически. Все дело в настройках Правил Конвертации Объектов (ПКО). Чтобы включить этот механизм, в конфигурации «Конвертация данных 2.1» необходимо:
Номенклатура).Рассмотрим пример того, как это выглядит на уровне логики платформы при создании нового объекта:
// Если поиск по GUID включен, система попытается создать ссылку с конкретным UUID
НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUIDИзИсточника);
СсылкаНаОбъект = Справочники.Номенклатура.ПолучитьСсылку(НовыйGUID);
// Проверяем наличие объекта в базе
Если СсылкаНаОбъект.ПолучитьОбъект() = Неопределено Тогда
// Объект будет создан с этим GUID при записи
НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НовыйОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
// Заполнение реквизитов...
НовыйОбъект.Записать();
КонецЕсли;
Проанализируем ситуацию, когда использование одинаковых GUID может быть опасным. Во-первых, это «проблема клонированных баз». Если база Б была создана как копия базы А, а затем они работали независимо, в них могут появиться разные объекты с одинаковыми идентификаторами. При включении синхронизации по UUID эти объекты «склеятся», что приведет к порче данных. В таких ситуациях опытные администраторы используют выборочный перенос документов с возможностью ручного управления выгрузкой через специальные флаги.
Во-вторых, существует теоретическая вероятность коллизии GUID для разных типов объектов. В распределенных базах (РИБ) при сбоях генератора идентификаторов конфликты иногда случаются. Для минимизации таких рисков в крупных проектах часто внедряются обмены через брокеры сообщений, обеспечивающие более надежную доставку и регистрацию данных.
Если вы работаете в современных конфигурациях на базе БСП (версии 2.3 и выше), рассмотрим переход на формат Enterprise Data (Конвертация данных 3.0). В этом механизме вместо прямого соответствия ГУИДов используется регистр сведений ПубличныеИдентификаторыСинхронизируемыхОбъектов.
В данном случае сопоставление происходит через «Публичный идентификатор», который передается в XML-пакете. Однако и здесь бывают сложности: при возникновении ошибок типа «Объект не найден» может потребоваться исправление правил обмена EnterpriseData для справочников Номенклатура и Склады, чтобы устранить проблему битых ссылок на уровне универсального формата.
Опытные разработчики рекомендуют использовать многоуровневый поиск. Посмотрим на алгоритм, который минимизирует риск появления дублей:
Артикул или Наименование.СоответствиеОбъектовИнформационныхБаз.Для проверки качества синхронизации и выявления расхождений после обмена эффективна простая сверка документов между любыми конфигурациями через http-сервис, которая позволяет быстро найти пропущенные или некорректно сопоставленные данные.
Для ручной корректировки «поехавших» соответствий в типовых решениях (УТ 11, БП 3.0, ERP) всегда можно воспользоваться обработкой «Сопоставление объектов информационных баз». Она позволяет визуально сравнить списки объектов и вручную указать правильные пары, что мгновенно заполнит необходимые регистры и восстановит корректную работу обмена.