Задача сравнения данных в различных информационных базах не является новой, что подтверждается большим количеством обработок на infostart-e, описывающих способ этого сравнения через com - соединение.
В данной публикации будет рассмотрен способ сравнения данных двух информационных баз посредством консоли запросов из Инструментов разработчика
Выбор описываемого инструмента объясняется тем, что часто встают задачи сначала сравнить данные в различных информационных базах, а в случае расхождения обработать найденное различие.
Примером применения может быть как сравнение узлов распределенной информационной базы, с одинаковыми конфигурациями, так и сопоставление данных между системой бухгалтерского и оперативного учета
Понимание того, что обмен между двумя различными информационными базами практически никогда не работает абсолютно идеально, не единожды заставляло автора этой публикации писать "одноразовые" обработки. И это происходило до тех пор, пока в нашем распоряжении не появились очень удобные инструменты //infostart.ru/public/15126/.
В составе описываемых инструментов имеется консоль запросов, позволяющая перед выполнением запроса вставить произвольный код.
В результате появляется возможность осуществить сравнение по следующей схеме
1. Перед выполнением запроса:
а. Устанавливаем соединение с внешней информационной базой;
б. Открываем в другой информационной базе внешнюю обработку, в модуле которой есть функция, возвращающая таблицу для сравнения с данными текущей базы.
В связи с известным ограничением при передаче ссылочных типов посредством COM-соединения таблицы, получаемые на стороне другой информационной базы, дополняются уникальными идентификаторами для сравнения значений колонок с типом справочник или документ;
в. Размещаем данные таблицы com-объекта из другой информационной базы во временную таблицу запроса;
2. Выполняем запрос с полным соединением для выявления разницы таблиц
3. В случае необходимости обрабатываем результат запроса
Описываемый подход и инструменты удобно применять, например, для тестирования результатов конвертации данных. При этом проверка совпадения разных видов объектов метаданных потребует небольших вариаций кода, что отражено в примерах предлагаемого для загрузки файла запроса.
Результат сравнения можно для наглядности сгруппировать, выводя в дерево результата итоговое поле, как на рисунке ниже
Разумеется, далеко не всегда у сравниваемых информационных баз уникальные идентификаторы объектов ссылочного типа совпадают, как в предлагаемом примере. В случае несовпадения идентификаторов потребуется определить другие критерии соответствия.