gifts2017

Синхронизация кодов справочников в однородных или разнородных базах

Опубликовал o2005 (o2005) в раздел Обработки - Обработка справочников

Перед программистом иногда возникает задача синхронизации справочников двух и более баз по кодам, артикулам и т.п.
И многие, прочитав первое предложение, скажут, что вот очередной "велосипед","баян", а может, даже и "аккордеон".
Но данная статья является описанием практического использования программы FuzzyStringComparison.exe (http://infostart.ru/public/442217/), которая не привязана ни к какой платформе 1С (да, по "секрету" говоря, вообще к 1С).
Алгоритмы, заложенные в прилагаемой обработке, на мой взгляд, вполне могут сгодиться для Вашего творчества и полета программных фантазий.

Сразу отмечу, что эти обработки приведена как пример для иллюстрации практического использования программы FuzzyStringComparison.exe .
Но в тоже время эта обработка может использоваться самостоятельно. Написаны обработка для правленных баз Управление торговлей 10.3 и Торговля 7.7. В справочнике номенклатуры коды приведены к строке 5 знаков и добавлено новое поле "КодНовый".

Оконо обработка содержит таблицу (1) из базы-приемника и таблицу (2) из базы-источника.

Для начала необходимо выгрузить (6) Номенклатуру в файлы: "Для_FuzzyStringComparison_Приемник.txt" для базы-приемника и "Для_FuzzyStringComparison_Источник.txt" (выгружается с флагом "Это База-Источник").

Далее эти файлы используются в приложении "FuzzyStringComparison.exe". На выходе из программы получаем файл "FuzzyStringComparison_Результат.txt".

Файлы "Для_FuzzyStringComparison_Источник.txt" и "Для_FuzzyStringComparison_Источник.txt" копируем в каталог базы-приемника. Они будут считаны при запуске обработки в базе-приемнике и помещены в таблицы значений для ускорения сравнений.

 Области (3) и (4) предназначены для фильтрации данных из базы-приемника и базы-источника соответствено.

 Двойной клик по таблице (1) приводит к заполнению таблицы (2) с учетом флага "Учитывать результат из программы сравнения  FuzzyStringComparison". Если флаг установлен тогда в таблицу (2) попадают данные из файла "FuzzyStringComparison_Результат.txt", а если нет тогда из файла "Для_FuzzyStringComparison_Источник.txt".

Двойной клик по строке в таблице (2) приводит к сопоставлению значения с текущей строкой в таблице (1). При этом проводится проверка, чтобы не было дублирования выбора как в таблице (1), так и в целом по справочнику Номенклатуры.

Нажатие кнопки (5) "Сохранить изменения" приводит к записи сопоставленных строк в поле "КодНовый".

Сделана также "чудо-кнопка" для автоматического сопоставления тех строк, которые без вариантов похожи "Автоматически связать элементы с Дистанцией = 0 (при условии одного совпадения)". Но это работает при наличии файла "FuzzyStringComparison_Результат.txt".

В таблице (1) есть еще управляющие элементы, в том числе и отмена привязки для текущей строки. С остальными полагаю разберетесь сами.

Еще раз отмечу, что обработку выкладываю не как некое универсальное решение, а как пример практического использования программы FuzzyStringComparison.exe.

Скачать файлы

Наименование Файл Версия Размер
Установка новых кодов для синхронизации справочника номенклатуры (8.2) 6
.epf 19,22Kb
05.02.16
6
.epf 1.0 19,22Kb Скачать
Установка новых кодов для синхронизации справочника номенклатуры (7.7) 1
.ert 207,00Kb
11.01.16
1
.ert 1.0 207,00Kb Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение
Комментарии
1. BigB (BigB) 11.01.16 14:59
2. Сергей (Che) Коцюра (CheBurator) 11.01.16 22:47
таких сравнений я написал уже наверное вагон, простенький пример http://infostart.ru/public/14255/
можно юзать ВК strmatch.dll (выложена на портале автором, даже исходники раздавал).

и похожесть строк лучшев % показывать - народу привычнее.
3. o2005 (o2005) 14.01.16 23:34
(1) BigB, Фон обработки умышленно сделал градиентным от желтого к белому, как дополнительное предупреждение пользователям, чтобы не начудили и работали с бОльшим вниманием. Ивыборцветаэтоделовкусакаждогоималовероятночтобудетнравитсяв­сем. (фразу написал в стиле вашего комментария).