При внедрении «1С:Управление торговлей 11.4» (УТ) в компанию, где уже ведется учет в «1С:Бухгалтерия предприятия 3.0» (БП), часто возникает критическая проблема: справочник номенклатуры в базах частично совпадает, но не синхронизирован на уровне внутренних идентификаторов. Если просто запустить обмен, система не «узнает» существующие товары в БП и создаст их копии, что приведет к задвоению остатков, аналитики и хаосу в учете. Рассмотрим подробно, как избежать этой ситуации и правильно совязать объекты между собой.
Прежде чем приступать к настройке, проанализируем, как 1С понимает, что товар «Болт М8» в УТ — это тот же «Болт М8» в БП. В современных конфигурациях обмен строится на формате Enterprise Data. Поиск объектов при обмене происходит в строгой иерархии:
Артикул и Наименование).Проблема автора заключается в том, что поля поиска могут не сработать из-за лишних пробелов, разного регистра букв или несовпадения артикулов, а GUID-ы у объектов в разных базах разные по определению, так как они создавались независимо. Наша задача — принудительно установить связь между ними.
Это самый «чистый» метод с точки зрения платформы. Разберем по шагам, как запустить сопоставление вручную, когда в базах уже есть накопленные данные.
Перейдем в базу Бухгалтерия предприятия. В разделе «Администрирование» — «Синхронизация данных» найдем нашу настройку обмена. Нажмем кнопку Еще и выберем пункт Выгрузить данные для сопоставления. Система подготовит специальный файл, содержащий информацию о существующих объектах БП.
После этого перейдем в Управление торговлей. При выполнении очередной синхронизации система обнаружит файл сопоставления и откроет интерактивное окно. В этом окне мы увидим две колонки: данные текущей базы и данные из второй базы. Проанализируем список номенклатуры. Если автоматическое сопоставление не сработало, мы можем вручную указать для каждой строки из УТ соответствующую строку из БП.
Важный нюанс: Если номенклатуры 20-30 тысяч позиций, ручное сопоставление каждой строки невозможно. В этом случае нужно использовать кнопку Установить автоматическое сопоставление и выбрать только те поля, в которых вы уверены (например, только Артикул). Если артикулы в базах заполнены идеально, система свяжет большую часть справочника самостоятельно.
Если стандартный помощник выдает ошибки (например, ошибку XDTO «Значение не является значением объектного типа»), можно прибегнуть к более техническому методу. Вся информация о связях объектов хранится в регистре сведений СоответствияОбъектовИнформационныхБаз.
Проанализируем структуру этого регистра. Он содержит:
УникальныйИдентификаторИсточника — ID объекта в текущей базе.УникальныйИдентификаторПриемника — ID объекта во внешней базе.ТипОбъекта — тип метаданных (например, «СправочникСсылка.Номенклатура»).Если у вас есть таблицы Excel из обеих баз, где сопоставлены коды или артикулы, можно написать небольшую обработку, которая заполнит этот регистр. Разберем пример логики кода для такой обработки:
Менеджер = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьМенеджерЗаписи();
Менеджер.УзелИнформационнойБазы = СсылкаНаУзелОбмена;
Менеджер.СобственнаяСсылка = СсылкаНаТоварВУТ;
Менеджер.УникальныйИдентификаторИсточника = СсылкаНаТоварВУТ.УникальныйИдентификатор();
Менеджер.УникальныйИдентификаторПриемникаСтрокой = Строка(ИД_Из_Бухгалтерии);
Менеджер.ТипИсточника = "СправочникСсылка.Номенклатура";
Менеджер.ТипПриемника = "СправочникСсылка.Номенклатура";
Менеджер.Записать();
После выполнения такой процедуры система при обмене будет точно знать, какой объект в УТ соответствует объекту в БП, и дублирования не произойдет.
Рассмотрим ситуацию, когда 20к позиций еще не занесены в УТ, но есть в БП. Чтобы они зашли в УТ «правильно», можно пойти от обратного:
Если идентификаторы объектов в обеих базах будут идентичны, синхронизация свяжет их автоматически без лишних вопросов и настроек сопоставления.
Часто пользователи сталкиваются с ошибкой: {ОбщийМодуль.ОбменДаннымиСервер.Модуль(5450)}: Значение не является значением объектного типа.... Это происходит в момент, когда 1С пытается преобразовать данные справочника в формат XML/XDTO для передачи.
Выясним причину этой ошибки. Чаще всего это происходит из-за:
Чтобы найти проблемный объект, рекомендуем настроить «Остановку по ошибке» в конфигураторе. Проанализируем стек вызовов и определим, на каком именно элементе справочника Номенклатура происходит сбой. Исправление битой ссылки в одной карточке часто «лечит» весь обмен.
Если вы уже запустили обмен и получили 10 000 дублей в «1С:Бухгалтерии», не паникуйте. Рассмотрим алгоритм исправления:
Наименование или Артикул.СоответствияОбъектовИнформационныхБаз. Ссылка на «удаленный» (склеенный) объект заменится на ссылку на «правильный» объект. При следующем обмене из УТ данные придут уже в верную карточку.Резюмируем: Основной залог успешного обмена без дублей — это предварительная подготовка данных. Убедитесь, что Артикул в обеих базах является уникальным и заполнен идентично. Используйте встроенные средства сопоставления при первом запуске и не пренебрегайте возможностью программной синхронизации идентификаторов, если объем данных велик.