Как исправить сопоставление объектов при синхронизации между УТ 11 и БП 3

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

Синхронизация данных между конфигурациями «Управление торговлей 11» (УТ) и «Бухгалтерия предприятия 3.0» (БП) — одна из самых частых задач при автоматизации бизнес-процессов. Однако в процессе эксплуатации пользователи нередко сталкиваются со сбоями: контрагенты связываются некорректно (например, из-за опечатки в ИНН при первом обмене), номенклатура двоится, а документы переносятся не в те папки или привязываются к неверным договорам. Для автоматического выполнения регулярных обменов по заданному расписанию используется программа для автоматизации синхронизации данных между базами 1С.

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

Почему стандартный регистр «Соответствия объектов» оказывается пустым?

При поиске причин неверного сопоставления многие специалисты по старой привычке пытаются открыть регистр сведений СоответствияОбъектовИнформационныхБаз (или аналогичную обработку). Однако в современных версиях УТ 11 и БП 3 этот регистр оказывается абсолютно пустым.

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

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

Способ 1. Интерактивное пересопоставление объектов при обмене

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

Рассмотрим этот процесс по шагам:

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

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

Способ 2. Очистка и редактирование регистра публичных идентификаторов

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

Проанализируем этот метод:

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

Если требуется очистить записи программно (например, для определенного типа объектов или по конкретному контрагенту), мы можем воспользоваться следующим кодом на встроенном языке 1С:


// Пример программного удаления записей сопоставления для конкретного узла
УзелОбмена = ПланыОбменов.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("БП");
Если Не УзелОбмена.Пустая() Тогда
    НаборЗаписей = РегистрыСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.УзелИнформационнойБазы.Установить(УзелОбмена);
    // При необходимости можно установить дополнительный отбор по типу или идентификатору объекта
    НаборЗаписей.Прочитать();
    
    // Перебираем записи и удаляем ненужные
    Индекс = НаборЗаписей.Количество() - 1;
    Пока Индекс >= 0 Цикл
        ТекущаяЗапись = НаборЗаписей[Индекс];
        // Условие для поиска ошибочной связи
        Если ТекущаяЗапись.ИмяТипаОбъекта = "Справочник.Контрагенты" Тогда
            НаборЗаписей.Удалить(Индекс);
        КонецЕсли;
        Индекс = Индекс - 1;
    КонецЦикла;
    
    НаборЗаписей.Записать();
КонецЕсли;

Способ 3. Сброс флага завершения настройки узла

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

Для этого воспользуемся следующей методикой:

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

После этого при переходе в меню настройки синхронизации система снова предложит пройти шаги настройки транспорта и запустит долгожданный шаг «Первоначальная загрузка и сопоставление данных». На этом этапе мы сможем выгрузить данные из базы-источника и выполнить глобальное пересопоставление.

Особенность поиска объектов в формате EnterpriseData

Важно понимать внутреннюю логику работы алгоритмов EnterpriseData, чтобы не допускать ошибок в будущем:

Важный вывод: если один раз произошло ошибочное сопоставление, простое исправление ИНН или наименования в карточке контрагента внутри баз уже не разорвет неверную связь. Корректировать данные нужно только путем удаления старой записи соответствия одним из описанных выше способов.

Борьба с дубликатами и «фиктивными» ссылками

В процессе обменов могут возникать две сопутствующие проблемы:

1. Фиктивные («битые») ссылки. Они появляются в регистре публичных идентификаторов, когда запись о сопоставлении создана, но сам объект в текущей базе по какой-то причине отсутствует или был физически удален. В интерфейсе такие записи отображаются как <Объект не найден>. Наличие подобных записей приводит к тому, что при обмене объекты начинают двоиться или система выдает ошибки сопоставления. Рекомендуется регулярно проверять регистр и удалять строки с битыми ссылками. Для этой задачи можно использовать обработку для автоматического поиска и замены битых ссылок на корректные объекты.

2. Появление дубликатов в рабочей базе. Если из-за неверной настройки обмена в базе уже создались два одинаковых контрагента или товара, не нужно пытаться перенастраивать обмен с нуля. Воспользуемся стандартной обработкой «Поиск и замена дублей»:

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

Выполняя эти несложные правила и понимая логику работы EnterpriseData, мы сможем поддерживать синхронизацию между «1С:Управление торговлей» и «1С:Бухгалтерия предприятия» в актуальном и исправном состоянии. Для выбора других сценариев перехода или обновления программ торгового учёта можно посетить раздел с решениями для переноса данных в 1С:Управление торговлей.

← На главную