При настройке правил обмена в конфигурации «Конвертация данных 2.1» для переноса информации из 1С 7.7 в 1С 8.3 разработчики часто сталкиваются со ситуацией, когда при повторной загрузке данных элементы и группы справочников задваиваются. Проанализируем причины возникновения этой проблемы и разберем по шагам, как правильно настроить поиск объектов и конвертацию типов.
Выясним главные причины дублирования элементов и иерархических групп при переносе из платформы 7.7 в 8.3:
Родитель вызывает рекурсивный поиск. При загрузке каждого подчиненного элемента обработка сначала пытается найти или создать его родительскую группу. Если группа еще не найдена в базе-приемнике, система создает новую группу-дубликат, не сопоставляя ее с уже имеющимися.УникальныйИдентификатор. Внешняя обработка выгрузки V8Exch77.ert генерирует текстовый идентификатор на основе внутреннего ID объекта 7.7. Поиск по идентификатору при выгрузке из 7.7 часто выключен или работает иначе, поэтому сопоставление полностью зависит от полей поиска."Товар " из 7.7 при загрузке в 8.3 не совпадает с наименованием "Товар", создавая дубликат.Рассмотрим, как правильно настроить правила конвертации свойств (ПКС) для иерархического справочника, чтобы исключить создание дублей:
Родитель и принудительно снимем флаг «Поиск».Наименование, Код или ЭтоГруппа).Если необходимо гарантировать совпадение наименований без учета лишних концевых пробелов, перейдем в ПКС Наименование и в обработчике ПередВыгрузкой укажем следующий код:
Значение = СокрЛП(Источник.Наименование);
Снятие поиска с Родитель позволяет механизму загрузки сначала найти сам объект или группу по ключевым полям, а затем корректно установить связь с родительской группой в иерархии.
Разберем вторую частую задачу: перенос текстовых данных из источника (1С 7.7) в ссылочный реквизит справочника базы-приемника (1С 8.3).
Настроим алгоритм перехода от простой строки к объекту справочника по шагам:
СправочникСсылка.ФизическиеЛица).Наименование, указываем для него тип приемника Строка и взводим флаг «Поиск».ПередВыгрузкой данного ПКС пишем:
Значение = Источник;
Физлицо).ПередВыгрузкой формируем строковое значение, которое будет передано для поиска и создания объекта:
Значение = Источник.Наименование;
Важно: Проверьте правильность выбора метаданных приемника. Если в базе 8.3 присутствуют несколько однотипных справочников (например, ФизическиеЛица и Сотрудники), ошибочный выбор не того справочника в поле «Приемник» приведет к тому, что реквизит при загрузке останется незаполненным.