Нужно было настроить конвертацию между двумя не связанными базами
Алгоритм следующий:
- Из базы источника выгружаются элементы выбранного справочника. Нужно выбрать вид справочника, и нажать кнопку "Выгрузить в буфер". Будут выгружены элементы со своими реквизитами
- В базе-приемнике перед чтением предлагается выбор реквизита для синхронизации (код или наименование) - кнопка "Прочитать буфер"
- Загрузка производится в табличное поле формы. Параллельно производится поиск по идентификатору. Если не удалось, то по реквизиту из шага 1
- Ячейки окрашиваются:
В зеленый, если найдено соответствие по идентификатору
В синий, если найдено соответствие по реквизиту поиска
В красный - соответствия нет - Двойной щелчок на синей ячейке - система создает новый элемент с таким же идентификатором.
Пользователю предлагается выбрать, нужно ли генерировать новый код, или использовать из файла загрузки. Рекомендуется следующий алгоритм:
Сначала использовать существующий
Если при использовании существующего система выдает ошибку о совпадении кодов, то генерировать новый код
Так же возможно установить флаг "Обрабатывать ошибку дублирования кодов". В этом случае модуль присвоит новый код элементу, который уже имеется в БД.
- Созданный на шаге 5 элемент и элемент из ячейки передается обработке поиска и замены значений (включен в макеты данной обработки), которая фоном заменяет "старый" элемент на "новый"
- При щелчке на красной ячейке система спрашивает, выбрать элемент из имеющихся, либо создать вручную. Если выбирается из имеющихся, то алгоритм аналогичен нажатию синей ячейки, но элемент выбирается вручную
- Если выбрано создание нового, то модуль спросит, нужно ли использовать имеющийся идентификатор, или создать новый. Если выбрано "Создать новый", то будут сопоставляться только реквизиты. Внутренний идентификатор будет новым.
- Так же модуль запрашивает, нужно ли генерировать новый код. Так же см. рекомендацию из п.5
- При сопоставлении реквизитов система проверяет, разрешились ли ссылочные поля. Если нет, то задает вопрос о необходимости записи данного элемента, с указанием того, какие реквизиты сопоставить не удалось.
Рекомендуется отказаться от записи, и сопоставить справочники, которые используются для данного справочника. - Если есть реквизиты, не разрешенные по ссылкам, и выбрано сохранение элемента, система так же спросит, нужно ли заполнять данные поля.
Данную возможность можно использовать для случаев, когда точно известно, что используемые в реквизитах справочники будут синхронизированы позднее
Общая рекомендация состоит в том, что начинать следует сначала с элементарных справочников, которые не содержат совсем, или содержат минимальное количество ссылочных реквизитов
Следует понимать, что данная обработка работает со ссылками объектов, и в ней могут содержаться ошибки, по крайней мере логические.
Ход моих мыслей может отличаться от Вашего, посему прошу ознакомиться с исходным кодом перед использованием, а также обязательно потестировать на копиях баз
Спасибо за рекомендацию и критику!