Сравнение двух баз запросом с использованием Инструментов разработчика и COM-соединения

11.08.16

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

Как сравнить различные информационные базы запросом? Как обработать результат сравнения удобным и гибким инструментом?

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

Наименование Файл Версия Размер
Текст запроса и внешняя обработка получения таблицы из другой базы
.zip 8,19Kb
62
.zip 8,19Kb 62 Скачать

Задача сравнения данных в различных информационных базах не является новой, что подтверждается большим количеством обработок на infostart-e, описывающих способ этого сравнения через com - соединение.

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

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

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

Понимание того, что обмен между двумя различными информационными базами практически никогда не работает абсолютно идеально, не единожды заставляло автора этой публикации писать "одноразовые" обработки. И это происходило до тех пор, пока в нашем распоряжении не появились очень удобные инструменты //infostart.ru/public/15126/.

В составе описываемых инструментов имеется консоль запросов, позволяющая перед выполнением запроса вставить произвольный код.

В результате появляется возможность осуществить сравнение по следующей схеме

1. Перед выполнением запроса:

а. Устанавливаем соединение с внешней информационной базой;

б. Открываем в другой информационной базе внешнюю обработку, в модуле которой есть функция, возвращающая таблицу для сравнения с данными текущей базы.

В связи с известным ограничением при передаче ссылочных типов посредством COM-соединения таблицы, получаемые на стороне другой информационной базы, дополняются уникальными идентификаторами для сравнения значений колонок с типом справочник или документ;

в. Размещаем данные таблицы com-объекта из другой информационной базы во временную таблицу запроса;

2. Выполняем запрос с полным соединением для выявления разницы таблиц

3. В случае необходимости обрабатываем результат запроса

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

Результат сравнения можно для наглядности сгруппировать, выводя в дерево результата итоговое поле, как на рисунке ниже

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

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 руб.

02.09.2020    119932    656    389    

701

Infostart PrintWizard

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

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

18000 руб.

06.10.2023    7011    20    6    

37

Infostart УДиФ: Управление данными и формами

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

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

10000 руб.

10.11.2023    3250    10    1    

31

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177344    1070    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

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

5000 руб.

07.02.2018    99205    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17914    6    8    

38

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27945    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

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

2400 руб.

24.09.2019    23491    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. izofen 13 11.08.16 09:20 Сейчас в теме
В конце публикации не хватает наглядного отображения результата сравнения(результата выполнения запроса), не понятно неужели автор предлагает передавать подобный инструмент пользователю?
maxim1c; miavolas; chernyshova_darya; +3 Ответить
2. partstrader 11.08.16 09:24 Сейчас в теме
(1) izofen, по моему в публикации речь идет об инструментах разработчика, а не о готовой обработке для пользователя
3. chernyshova_darya 11.08.16 09:30 Сейчас в теме
(1) izofen, присоединюсь к вопросу отображения результата сравнения... в тексте публикации затронут вопрос о сравнении данных между системой бухгалтерского и оперативного учета, хотелось бы более развернуто по этому вопросу
vikupinov; +1 Ответить
4. vikupinov 11.08.16 09:38 Сейчас в теме
Действительно готовый инструмент для сравнения данных бухгалтерии и торговли был бы более интересной темой и хотелось бы более подробно
5. 1С_Мастер 61 11.08.16 09:42 Сейчас в теме
Сравнение баз запросом с наглядным отображением результата - http://infostart.ru/public/319016/
6. trader7777777 11.08.16 10:08 Сейчас в теме
(5) 1С_Мастер, интересно почему вы выбрали именно такую консоль запросов, а не инструменты разработчика как автор статьи?
miavolas; +1 Ответить
7. miavolas 168 11.08.16 10:15 Сейчас в теме
(5) 1С_Мастер, спасибо за комментарий, я видел вашу публикацию и "плюсанул" за то что делитесь опытом по интересной теме.. в своей публикации хотел рассказать про то что стараюсь использовать инструмент (инструменты разработчика) с большим количеством дополнительных возможностей для последующей обработки данных... хотя уверен, что используемый нами принцип может не только количественные расхождения (как в вашей статье) отображать, но и поэлементно показать разницу... чтобы например зарегистрировать изменения в плане обмена и устранить различие( в случае использования планов обмена)
8. maxim1c 11.08.16 10:45 Сейчас в теме
Может ли вопросу сравнения данных в разных базах помочь возможность в инструментах разработчика выводить уникальные идентификаторы?
10. inforeader 11.08.16 11:37 Сейчас в теме
(8) maxim1c, 1с не позволяет запросом получить уникальные идентификаторы, в ИР после получения результата запроса получаем данные UUID, скорее всего эта возможность не получится использовать для сравнения данных запросом
13. necropunk 9 11.08.16 18:09 Сейчас в теме
(10) inforeader, там в самих Инструментах разработчика, над выводом результата запроса есть кнопочка "Отображать GUID" или как-то так. Просто ее нажимаешь и в таблице появляются идентификаторы.
14. inforeader 11.08.16 18:51 Сейчас в теме
(13) necropunk, ну и какой толк для целей сравнения данных от вывода уникальных идентификаторов уже после выполнения запроса? где эта кнопочка находится известно, только это не поможет решению задачи сравнения данных запросом
18. tormozit 7133 21.08.16 14:53 Сейчас в теме
(14) В консоли запросов (ИР) можно вывести результат отсортированного по ключу (для ссылочных полей по значениям, а не по представлениям) запроса. Затем открыть таблицу результата в отдельном окне. Там включить режим отображения идентификаторов ссылок, два раза нажав на кнопку с перечеркнутым зеленым кольцом. Затем вывести содержимое таблицы результата в табличный документ через команду "Передать/в MXL" и сохранить его в файл. Далее повторить все тоже самое в другой базе и затем сравнить полученные 2 табличных документа стандартными средствами платформы. При этом при двойном клике на ссылочных ячейках будут открываться соответствующие объекты данных.
19. inforeader 21.08.16 15:18 Сейчас в теме
(18) tormozit, очень интересно увидеть комментарий своего поста от разработчика инструментов. Тех самых Инструментов разработчика, которые помогают нам каждый день, но касаемо содержания публикации и моего предыдущего сообщения продолжаю считать.

Что для целей программной обработки данных, сравнение двух табличных документов средствами платформы особой ценности не представляет
22. vec435 15 24.10.16 14:13 Сейчас в теме
(18) tormozit, было бы красиво добавить сравнение ссылочных данных разных баз по ГУИД программно в самой консоли запросов (ИР).
9. AndrewK990 11.08.16 10:46 Сейчас в теме
Добрый день! А можно более наглядно отобразить схему работы?
17. miavolas 168 17.08.16 22:38 Сейчас в теме
(9) AndrewK990, доброго времени суток, что касается более наглядного отображения процесса соединения и сравнения... при написании данной публикации думал нарисовать ментальную карту с выделением основных моментов (чтобы картинка красивая была) или маленькую диаграмму в visio, но особой наглядности это не дает.. да и идея супер простая слишком мало шагов и все итак прозрачным кажется
11. aspirator23 339 11.08.16 14:24 Сейчас в теме
Прикладное решение по этой теме http://infostart.ru/public/442398/ Сравнение номенклатур в двух базах данных.
В предыдущих версиях использовал Гуид. Это работает, если базы свои и ты понимаешь где эти гуиды пишутся при обмены, как их исправить, если необходимо.
Если базы чужие и обработка "тянет" на универсальность, то от гуидов лучше отказаться. Квалификация потребителей не такова, чтобы понимать что и как связано.
16. writer_info 12.08.16 16:01 Сейчас в теме
(11) aspirator23, как думаете есть более интересный инструмент, чем ИР для такой задачи?
12. Yashazz 4707 11.08.16 17:52 Сейчас в теме
Не-е-е. Это прошлый век. По скорости в первую очередь. Я бы такую задачу решал через подключение внешними источниками и СКД, натянутой на них.
15. maximklementiev 11.08.16 19:19 Сейчас в теме
Тема интересная ... и интересно сможет ли автор реализовать подобную схему через подключение внешних источников данных таким образом предложить развитие публикации
20. izofen 13 24.08.16 09:17 Сейчас в теме
Если совпадение справочников и документов проверять в запросе строя ПОЛНОЕ СОЕДИНЕНИЕ и то расхождение регистров накопления остатков наверное проще было бы контролировать по остаткам?
21. miavolas 168 24.08.16 09:28 Сейчас в теме
(20) izofen, наверное в зависимости от решаемой задачи может быть и такой критерий соответствия данных при сравнении. В частности в приводимом примере такое условие:
23. JohnConnor 64 29.11.16 08:22 Сейчас в теме
ругается на {ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(74)}: Ошибка при вызове метода контекста (Добавить)
24. miavolas 168 29.11.16 11:12 Сейчас в теме
(23) Добрый день, Николай, из вашего сообщения можно предположить, что фрагмент кода внешней обработки, которая открывается с использованием com-соединения при попытке добавить колонку выдает сообщение с ошибкой.
Мне не очевидно какие информационные базы между собой сравниваете, и что именно пытаетесь сравнить(документы, справочники или остатки регистров накопления) опишите подробнее и я попробую вам помочь воспользоваться идеей описанной в данной публикации
25. user1049435 20.02.20 04:00 Сейчас в теме
Добрый день, хотелось бы более подробной информации о том, как работает описанный запрос
26. miavolas 168 02.03.20 18:49 Сейчас в теме
(25) Если сформулируете вопрос постараюсь ответить
Оставьте свое сообщение