Синхронизация данных между конфигурациями «Управление торговлей 11» (УТ) и «Бухгалтерия предприятия 3.0» (БП) — одна из самых частых задач при автоматизации бизнес-процессов. Однако в процессе эксплуатации пользователи нередко сталкиваются со сбоями: контрагенты связываются некорректно (например, из-за опечатки в ИНН при первом обмене), номенклатура двоится, а документы переносятся не в те папки или привязываются к неверным договорам. Для автоматического выполнения регулярных обменов по заданному расписанию используется программа для автоматизации синхронизации данных между базами 1С.
Попытки исправить реквизиты объектов в базах напрямую часто не дают результата: система продолжает упорно связывать не те элементы. В этой статье мы подробно разберем механизмы сопоставления данных в современных конфигурациях 1С и изучим практические способы исправления связей между объектами информационных баз.
При поиске причин неверного сопоставления многие специалисты по старой привычке пытаются открыть регистр сведений СоответствияОбъектовИнформационныхБаз (или аналогичную обработку). Однако в современных версиях УТ 11 и БП 3 этот регистр оказывается абсолютно пустым.
Выясним причину этого поведения. Дело в том, что современный обмен между данными конфигурациями по умолчанию функционирует на базе **универсального формата EnterpriseData**. При использовании этого формата классический регистр соответствий больше не задействуется. Вместо него вся информация о связях объектов (по уникальным идентификаторам или ключевым полям поиска) записывается в другой системный регистр — «Публичные идентификаторы синхронизируемых объектов» (имя в метаданных: РегистрСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов).
Если сопоставление произошло некорректно, искать и удалять неверные связи необходимо именно в этом регистре, либо использовать специализированные интерактивные механизмы.
Это самый безопасный и правильный способ с точки зрения Библиотеки стандартных подсистем (БСП). Он позволяет визуально оценить связи и разорвать некорректные соответствия прямо в пользовательском интерфейсе, не прибегая к удалению настроек синхронизации.
Рассмотрим этот процесс по шагам:
После выполнения этих шагов новые связи автоматически запишутся в системные таблицы, и при последующих обменах объекты будут синхронизироваться корректно. Чтобы проконтролировать результат и быстро обнаружить расхождения в учете после настройки обмена, применяется автоматическая сверка бухгалтерских и налоговых проводок между базами 1С.
Если интерактивный режим по каким-то причинам недоступен или требуется массово проанализировать связи, мы можем напрямую обратиться к регистру сведений ПубличныеИдентификаторыСинхронизируемыхОбъектов.
Проанализируем этот метод:
Если требуется очистить записи программно (например, для определенного типа объектов или по конкретному контрагенту), мы можем воспользоваться следующим кодом на встроенном языке 1С:
// Пример программного удаления записей сопоставления для конкретного узла
УзелОбмена = ПланыОбменов.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("БП");
Если Не УзелОбмена.Пустая() Тогда
НаборЗаписей = РегистрыСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.УзелИнформационнойБазы.Установить(УзелОбмена);
// При необходимости можно установить дополнительный отбор по типу или идентификатору объекта
НаборЗаписей.Прочитать();
// Перебираем записи и удаляем ненужные
Индекс = НаборЗаписей.Количество() - 1;
Пока Индекс >= 0 Цикл
ТекущаяЗапись = НаборЗаписей[Индекс];
// Условие для поиска ошибочной связи
Если ТекущаяЗапись.ИмяТипаОбъекта = "Справочник.Контрагенты" Тогда
НаборЗаписей.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
Иногда требуется полностью сбросить состояние обмена, чтобы принудительно вызвать штатный помощник первоначального сопоставления данных, не удаляя при этом саму настройку обмена (чтобы не потерять зарегистрированные изменения документов).
Для этого воспользуемся следующей методикой:
После этого при переходе в меню настройки синхронизации система снова предложит пройти шаги настройки транспорта и запустит долгожданный шаг «Первоначальная загрузка и сопоставление данных». На этом этапе мы сможем выгрузить данные из базы-источника и выполнить глобальное пересопоставление.
Важно понимать внутреннюю логику работы алгоритмов EnterpriseData, чтобы не допускать ошибок в будущем:
ПубличныеИдентификаторыСинхронизируемыхОбъектов.Важный вывод: если один раз произошло ошибочное сопоставление, простое исправление ИНН или наименования в карточке контрагента внутри баз уже не разорвет неверную связь. Корректировать данные нужно только путем удаления старой записи соответствия одним из описанных выше способов.
В процессе обменов могут возникать две сопутствующие проблемы:
1. Фиктивные («битые») ссылки. Они появляются в регистре публичных идентификаторов, когда запись о сопоставлении создана, но сам объект в текущей базе по какой-то причине отсутствует или был физически удален. В интерфейсе такие записи отображаются как <Объект не найден>. Наличие подобных записей приводит к тому, что при обмене объекты начинают двоиться или система выдает ошибки сопоставления. Рекомендуется регулярно проверять регистр и удалять строки с битыми ссылками. Для этой задачи можно использовать обработку для автоматического поиска и замены битых ссылок на корректные объекты.
2. Появление дубликатов в рабочей базе. Если из-за неверной настройки обмена в базе уже создались два одинаковых контрагента или товара, не нужно пытаться перенастраивать обмен с нуля. Воспользуемся стандартной обработкой «Поиск и замена дублей»:
ПубличныеИдентификаторыСинхронизируемыхОбъектов. Правильный объект получит корректную привязку к базе-корреспонденту, а битая связь удалится. При следующем сеансе обмена дубли больше не появятся.Выполняя эти несложные правила и понимая логику работы EnterpriseData, мы сможем поддерживать синхронизацию между «1С:Управление торговлей» и «1С:Бухгалтерия предприятия» в актуальном и исправном состоянии. Для выбора других сценариев перехода или обновления программ торгового учёта можно посетить раздел с решениями для переноса данных в 1С:Управление торговлей.