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

11.08.16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

INFOSTART TECH EVENT 2023, 11-13 октября, Санкт-Петербург

Инструментарий разработчика Мобильная разработка DevOps и автоматизация разработки Администрирование СУБД Мероприятия Россия Платные (руб)

XIII конференция по управлению и технологиям автоматизации учета на платформе 1С:Предприятие, которая пройдет в Санкт-Петербурге и соберет 1500 участников из разных регионов России и мира.

5100 руб.

09.12.2022    30068    11    0    

433

Онлайн-интенсив "DevOps для 1С". с 4 сентября по 17 октября 2023 г.

Инструментарий разработчика DevOps и автоматизация разработки DevOps для 1С Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

20.06.2023    9847    0    Infostart    2    

121

SALE! %

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

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

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

12000 10000 руб.

02.09.2020    93549    477    380    

531

PowerTools

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

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

3600 руб.

14.01.2013    170219    1051    0    

792

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

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

Программист - это человек, непрерывно принимающий решения. Написание кода не является процессом принятия решения - это всего лишь трансляция ваших желаний. Если вас периодически тяготит написание сотен строк кода ради решения задач, то прошу обратить внимание. Данный продукт позволит существенно сократить время на рутинные операции при разработке. За счет библиотечной реализации сокращается объём кода, а его читаемость повышается. К библиотеке прилагается документация API и шаблоны кода для наиболее популярных методов.

4200 руб.

16.04.2021    12519    3    9    

9

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

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

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

5000 руб.

07.02.2018    96499    234    97    

286

Менеджер конфигураций 1С

Инструментарий разработчика Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1439 руб.

21.02.2023    5252    2    33    

14

Программное формирование существующих печатных форм

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

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    14099    39    RocKeR_13    5    

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