Как настроить обмен между УТ 11.4 и БП 3.0, чтобы не задваивалась номенклатура?

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

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

Понимание механизмов синхронизации Enterprise Data

Прежде чем приступать к настройке, проанализируем, как 1С понимает, что товар «Болт М8» в УТ — это тот же «Болт М8» в БП. В современных конфигурациях обмен строится на формате Enterprise Data. Поиск объектов при обмене происходит в строгой иерархии:

  1. Уникальный идентификатор (GUID): Это скрытый 32-значный код объекта. Если объект уже обменивался ранее, информация о связи GUID УТ и GUID БП хранится в специальном регистре. Это самый приоритетный способ.
  2. Поля поиска: Если связи по GUID нет, система ищет объект по реквизитам, указанным в правилах обмена (обычно это Артикул и Наименование).
  3. Создание нового объекта: Если по полям поиска совпадений не найдено, 1С создает новый элемент справочника.

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

Способ 1: Использование стандартного помощника сопоставления

Это самый «чистый» метод с точки зрения платформы. Разберем по шагам, как запустить сопоставление вручную, когда в базах уже есть накопленные данные.

Перейдем в базу Бухгалтерия предприятия. В разделе «Администрирование» — «Синхронизация данных» найдем нашу настройку обмена. Нажмем кнопку Еще и выберем пункт Выгрузить данные для сопоставления. Система подготовит специальный файл, содержащий информацию о существующих объектах БП.

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

Важный нюанс: Если номенклатуры 20-30 тысяч позиций, ручное сопоставление каждой строки невозможно. В этом случае нужно использовать кнопку Установить автоматическое сопоставление и выбрать только те поля, в которых вы уверены (например, только Артикул). Если артикулы в базах заполнены идеально, система свяжет большую часть справочника самостоятельно.

Способ 2: Синхронизация через регистр соответствий

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

Проанализируем структуру этого регистра. Он содержит:

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


Менеджер = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьМенеджерЗаписи();
Менеджер.УзелИнформационнойБазы = СсылкаНаУзелОбмена;
Менеджер.СобственнаяСсылка = СсылкаНаТоварВУТ;
Менеджер.УникальныйИдентификаторИсточника = СсылкаНаТоварВУТ.УникальныйИдентификатор();
Менеджер.УникальныйИдентификаторПриемникаСтрокой = Строка(ИД_Из_Бухгалтерии);
Менеджер.ТипИсточника = "СправочникСсылка.Номенклатура";
Менеджер.ТипПриемника = "СправочникСсылка.Номенклатура";
Менеджер.Записать();

После выполнения такой процедуры система при обмене будет точно знать, какой объект в УТ соответствует объекту в БП, и дублирования не произойдет.

Способ 3: Метод предварительной «очистки» через GUID

Рассмотрим ситуацию, когда 20к позиций еще не занесены в УТ, но есть в БП. Чтобы они зашли в УТ «правильно», можно пойти от обратного:

  1. Выгрузить всю номенклатуру из БП в Excel вместе с их внутренними уникальными идентификаторами (GUID).
  2. Загрузить эти данные в УТ с помощью обработки «Загрузка данных из файла». При загрузке важно программно подставить GUID из БП в новые объекты УТ.

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

Устранение типичных ошибок (XDTO)

Часто пользователи сталкиваются с ошибкой: {ОбщийМодуль.ОбменДаннымиСервер.Модуль(5450)}: Значение не является значением объектного типа.... Это происходит в момент, когда 1С пытается преобразовать данные справочника в формат XML/XDTO для передачи.

Выясним причину этой ошибки. Чаще всего это происходит из-за:

Чтобы найти проблемный объект, рекомендуем настроить «Остановку по ошибке» в конфигураторе. Проанализируем стек вызовов и определим, на каком именно элементе справочника Номенклатура происходит сбой. Исправление битой ссылки в одной карточке часто «лечит» весь обмен.

Что делать, если дубли уже появились?

Если вы уже запустили обмен и получили 10 000 дублей в «1С:Бухгалтерии», не паникуйте. Рассмотрим алгоритм исправления:

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

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

← На главную