Как устранить дублирование данных и ошибки сопоставления при синхронизации УТ 11 и БП 3.0

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

Синхронизация данных между типовыми конфигурациями «1С:Управление торговлей 11» и «1С:Бухгалтерия предприятия 3.0» — это стандартная задача, которая, тем не менее, часто преподносит неприятные сюрпризы в виде дублирующихся контрагентов, номенклатуры или документов. Одной из наиболее сложных проблем является некорректная работа регистров сопоставления и возникновение системных ошибок при попытке ручного исправления данных. Разберем подробно, почему возникают эти сложности и как их правильно решать, используя механизмы современной платформы 1С.

Причина ошибки «Несоответствие типов» при записи в регистр

Рассмотрим ситуацию, когда при попытке ручного добавления записи в РегистрСведений.СоответствияОбъектовИнформационныхБаз система выдает ошибку в обработчике ПередЗаписью. Текст ошибки обычно выглядит следующим образом:


Ошибка при выполнении обработчика - 'ПередЗаписью' по причине:
{РегистрСведений.СоответствияОбъектовИнформационныхБаз.МодульНабораЗаписей(32)}: 
Ошибка при вызове метода контекста (Добавить) 
ОбменДанными.Получатели.Добавить(Отбор.УзелИнформационнойБазы.Значение); 
по причине: Несоответствие типов (параметр номер '1')

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

Важный момент: ручная правка этого регистра крайне не рекомендуется. В новых редакциях УТ 11 и БП 3.0, использующих Универсальный формат (Enterprise Data), данный регистр практически не задействован для сопоставления новых данных. Вместо него система использует другой механизм.

Переход на «Публичные идентификаторы объектов»

Выясним, какой регистр является ключевым для обмена через Универсальный формат. Это РегистрСведений.ПубличныеИдентификаторыОбъектов. В отличие от старого механизма (обмена по правилам XML), где сопоставление шло напрямую «Ссылка источника — Ссылка приемника», Enterprise Data работает через промежуточный идентификатор (GUID), который понятен обеим базам.

Если мы обнаруживаем дубли, это означает, что при загрузке система не смогла найти связь в этом регистре и не нашла объект по «полям поиска» (например, по ИНН/КПП для контрагентов или Артикулу для номенклатуры). В результате создается новая запись.

Правильная настройка сопоставления через интерактивный интерфейс

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

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Настройки синхронизации данных.
  3. Выберем нашу настройку и нажмем кнопку Синхронизировать.
  4. Если автоматическое сопоставление не дает результата, необходимо нажать на ссылку Параметры синхронизации — Состав отправляемых данных или дождаться появления этапа «Сопоставление данных» (в современных релизах это происходит, если есть неразрешенные коллизии).

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

Устранение уже созданных дублей

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

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

Разбор полей поиска при Универсальном формате

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

  1. Поиск по уникальному идентификатору (GUID): Система ищет в регистре ПубличныеИдентификаторыОбъектов. Если запись есть — объект сопоставляется.
  2. Поиск по полям поиска: Если в регистре связи нет, система ищет в справочнике по ключевым реквизитам. Для каждого типа данных они свои:
    • Контрагенты: ИНН + КПП (для юрлиц) или ИНН (для физлиц).
    • Номенклатура: Артикул + Наименование (в зависимости от настроек).
    • Договоры: Владелец + Номер + Дата.

Если менеджер в УТ создал контрагента без ИНН, а бухгалтер в БП уже завел его с ИНН, система при синхронизации не сможет их связать и создаст дубль в УТ (карточку с ИНН из БП) и дубль в БП (карточку без ИНН из УТ). Чтобы этого избежать, необходимо требовать от пользователей заполнения ключевых полей до момента выполнения обмена.

Радикальное решение: Пересоздание синхронизации

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

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

Программная регистрация изменений (совет программисту)

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


// Пример получения идентификатора для Enterprise Data
ИдентификаторОбъекта = ОбменДаннымиСервер.ПубличныйИдентификаторОбъекта(СсылкаНаОбъект);

Подводя итог, отметим: работа с дублями при синхронизации — это всегда комбинация технических настроек и дисциплины ведения учета. Использование встроенных инструментов сопоставления и соблюдение уникальности полей поиска (ИНН/КПП) практически полностью исключают необходимость ручного вмешательства в регистры 1С.

← На главную