Сравнение результатов запросов в двух базах

Программирование - Инструментарий

обработка сравнение таблицы COM-соединение разные базы обмен данными синхронизация

42
Внешняя обработка, которая выводит отличия между таблицами, полученными в результате выполнения запросов и в текущей базе и в подключенной через COM-соединение.

Функциональность

Данная внешняя обработка позволяет выполнить запросы в двух разных базах 1С 8.х (текущей и подключенной через COM-соединение), сравнить полученные из результатов запросов таблицы значений и вывести различия в них.  При сравнении таблиц значений обработка может сравнивать как примитивные, так и ссылочные типы (по ГУИДу). Для ссылочных типов возможно сравнение ссылок с учетом данных регистра сведений "Соответствия объектов информационных баз". Обработка автоматически сохраняет все настройки и восстанавливает их при следующем открытии в этой базе. Также можно сохранять разные наборы запросов и открывать их из списка.

Примеры использования

Случаи, когда данная обработка облегчает работу:

  • Сверка корректности переноса справочников/документов и т.п. из одной базы в другую
  • Сверка корректности переноса остатков из устаревшей базы в новую
  • Проверка синхронизированности объектов в распределенной базе
  • Определение объектов, которые необходимо зарегистрировать к отправке при сбоях синхронизации
  • Проверка объектов, которые будут добавлены/перезаписаны при начале обмена данными между базами

Как пользоваться обработкой

Открываем как внешний отчет.На первой закладке указываем параметры базы, к которой нужно подключиться через COM-соединение и тестируем подключение. Самый простой способ указать параметры базы: просто скопировать строку подключения базы в поле "Строка подключения базы", тип базы, имя сервера/баз, путь для файловой базы определятся автоматически.

Если тест подключения прошел успешно, переходим на закладку "Запрос к этой базе". Вы можете написать запрос, используя конструктор запросов (чтобы вызвать конструктор запросов, как обычно щелкаем правой кнопкой мыши), либо написать его вручную. В созданном запросе должна присутствовать как минимум одна ключевая колонка. Ключевой колонкой считается колонка, псевдоним которой заканчивается на _Ключ. Подробнее о принципах сравнения таблиц обработкой.

После создания запроса в текущей базе переходим на закладку "Запрос к подключаемой базе". Вы можете скопировать текст и параметры запроса из запроса к текущей базе, нажав на соответствующую кнопку. Но если в подключаемой базе структура метаданных отличается, возможно потребуется отредактировать запрос. Обязательное условие: набор полей в обоих запросах должен совпадать. Также в подключаемой базе параметры запроса могут быть только примитивных типов, поэтому рекомендуется в текущей базе сразу писать запрос, параметры которого будут только примитивных типов.

Если сравниваемый объект метаданных учавствует в обмене через план обмена (с использованием БСП), то возможно сравнение ссылок с учетом данных регистра сведений "Соответствия объектов информационных баз". Для каждой ссылки ищется запись в этом регистре для указанного узла и если такая запись есть, то берется не ГУИД ссылки этой базы, а ГУИД приемника из регистра.

 

После создания запросов в обоих базах и указания параметров сравнения переходим на вкладку "Сравнение" и нажимаем кнопку "Сравнить результаты запросов". Обработка последовательно выполнит запросы в этой и подключенных базах, сравнит полученные таблицы значений и выведет результаты сравнения.

Как сравниваются таблицы значений

При создании запроса должна быть определена одна или несколько ключевых колонок получаемой таблицы значений путем добавления строки _Ключ к псевдониму поля запроса. Такие колонки считаются ключевыми. Сравнение таблиц значений производится по совпадению ключевых колонок: строки считаются сопоставленными друг другу, если у них совпадают все ключевые колонки. Для сопоставленных строк производится сравнение остальных колонок, если значения всех колонок совпадают, строки считаются одинаковыми и исключаются из вывода результатов сравнения. Таким образом получаются 4 группы строк:

  • строки, у которых совпадают все колонки
  • строки, набор ключевых колонок которых есть только в этой базе; 
  • строки, набор ключевых колонок есть только в подключаемой базе;
  • строки, набор ключевых колонок которых совпадет, но значения других колонок отличается. 

Результаты сравнения

Перед сравнением можно выбрать флажками какие таблицы нас интересуют. При установленном флажке таблица выводится полностью, при снятом - только количество строк.

После сравнения таблиц совпадения и различия в них отобразятся в табличном документе, каждую группу строк можно свернуть. По каждой группе отображается количество строк.

Для строк, отличающихся значениями неключевых колонок желтым цветом выделяются колонки, значения в которых различаются.

Если выведенное поле является ссылкой этой базы, можно открыть этот объект двойным щелчком мыши по нужной ячейке.

Вы можете сохранить параметры подключения и тексты запросов с параметрами кнопкой "Сохранить" под произвольным именем, чтобы в дальнейшем открыть их и повторно запустить сравнение.

Тестовое окружение

Обработка тестировалась на платформе 8.3.10.2667 с конфигурациями БП 3.0 и БП 2.0 в качестве подключаемой базы.

Ограничения использования

Обработка работает под платформой не ниже чем 8.3.6.1977 под конфигурациями на управляемых формах. При переходе со старых конфигураций на обычных формах на новые версии конфигураций на управляемых формах можно открывать обработку в базе новой конфигурации и сравнивать данные из неё.

Версия 1.1 от 06.09.2018

1. Добавлено автоматическое определение параметров базы по строке соединения: достаточно скопировать и вставить строку соединения.

2. Добавлен вывод количества полностью совпавших строк.

3. Добавлена возможность вывода полностью совпавших строк. Для этого на закладке "Сравнение" нужно установить флажок "Вывести совпавшие". 

Версия 1.1.1 от  13.09.2018

Исправление ошибок версии 1.1

К сожалению в предыдущей версии была допущена небольшая ошибка, для исправления замените в строках 661 и 669 модуля формы строку

ПолучитьПредставлениеСсылкиДругойБазы(СтрокаТЗ, ИмяКолонки, Колонки, КОМСоединение);

на 

Обл.СтрокаСтолбец.Параметры.ЗначениеКолонки = ПолучитьПредставлениеСсылкиДругойБазы(СтрокаТЗ, ИмяКолонки, Колонки, КОМСоединение);

Версия 1.2 от 21.09.2018

1. Добавлено сопоставление ссылок с использованием регистра сведений "Соответствия объектов информационных баз".

2. Добавлена возможность выбора режима вывода каждой из результирующих таблиц: только количество строк или все строки.

3. Для ссылочных полей, выводимых в таблицы записывается расшифровка, так что ссылки теперь можно открывать двойным щелчком по нужной ячейке табличного документа.

42

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

Наименование Файл Версия Размер
Сравнение результатов запросов в двух базах:
.epf 17,45Kb
06.09.18
11
.epf 1.2 17,45Kb 11 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
2. alex_4x 78 12.09.18 12:42 Сейчас в теме
Здорово было бы еще сделать связь через регистр "СоответствиеОбъектовДляОбмена" опционально.
4. Serge R 67 22.09.18 07:00 Сейчас в теме
(2) Реализовано в версии 1.2
3. Vovanches 13.09.18 16:21 Сейчас в теме
Сохранить и экспортировать настройки можно?
5. Serge R 67 22.09.18 07:05 Сейчас в теме
(3) Можно сохранить настройки в текущей базе под заданным именем и восстановить их потом. Экспорт/импорт настроек через файл в данный момент не реализован.
Оставьте свое сообщение