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

12.05.19

Разработка - Инструментарий разработчика

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Сравнение результатов запросов в двух базах:
.epf 17,45Kb
116
116
1 SM
Скачать Купить за 1 850 руб.

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

Данная внешняя обработка позволяет выполнить запросы в двух разных базах 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.2 от 21.09.2018

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

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

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

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    140175    769    391    

801

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    11480    31    6    

60

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    7213    27    4    

50

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

5400 руб.

17.05.2024    13552    30    27    

75

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2880 руб.

14.01.2013    181774    1103    0    

876

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15965    3    12    

39

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    101093    242    97    

302

Инструментарий разработчика Перенос данных 1C Программист Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    24479    17    15    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 08.06.18 07:43
Сообщение было скрыто модератором.
...
2. alex_4x 86 12.09.18 12:42 Сейчас в теме
Здорово было бы еще сделать связь через регистр "СоответствиеОбъектовДляОбмена" опционально.
4. Serge R 227 22.09.18 07:00 Сейчас в теме
(2) Реализовано в версии 1.2
3. Vovanches 13.09.18 16:21 Сейчас в теме
Сохранить и экспортировать настройки можно?
5. Serge R 227 22.09.18 07:05 Сейчас в теме
(3) Можно сохранить настройки в текущей базе под заданным именем и восстановить их потом. Экспорт/импорт настроек через файл в данный момент не реализован.
6. Evgenych 01.08.19 12:08 Сейчас в теме
Как заполнять значение параметра ? Добавил в запрос параметр, выбрал тип - Синхронизация данных через универсальный формат
в поле значение параметра не дает ни выбирать ничего, ни писать
7. maraty 450 14.10.21 14:56 Сейчас в теме
Спасибо за удобный инструмент!
Можно значительно ускорить сравнение, если вместо заполнения в соответствии имен перечислений, просто подставить его значение
Т.е. вместо
НоваяСтрокаДругойБазы[ИмяКолонки+"_ГУИД"] = КОМЗначениеИзСоответствия
использовать
НоваяСтрокаДругойБазы[ИмяКолонки+"_ГУИД"] = КОМСоединение.XMLСтрока(КОМСтрокаТЗ[ИмяКолонки]);
8. windows98a 131 10.01.22 16:40 Сейчас в теме
При сравнении оборотов по регистру Выручка и себестоимость продаж в двух базах обработка сравнения отображает (скрин 1, -8 и 8) что в подключенной базе значение 8, хотя в регистре подключенной базы значение отрицательное, т.е. "-8", как и в текущей базе. Выводит как строки не совпадающие по не ключевым.

Так же в этом же регистре и в этом же сравнении, выводит (скрин 2, значения 948 (в текущей) и 3 (в подключенной)), что не совпадает по не ключевым. При ручном отборе и сравнении и в подключенной и в текущей базе сумма по всем записям 951. Отдельного значения с количеством 948 нет ни в подключенной, ни в текущей базе.

В описании не нашел информации по сравнению не ключевых позиций. Просьба прояснить почему так происходит. По ключевым все ноль в ноль.

Запрос одинаковый в обеих базах (скрин 3).
Прикрепленные файлы:
Оставьте свое сообщение