Консоль запросов к двум базам (общий менеджер временных таблиц)

05.06.23

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

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

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

Наименование Файл Версия Размер
Консоль запросов к двум базам - расширение
.cfe 53,21Kb
26
.cfe 53,21Kb 26 Скачать
Консоль запросов к двум базам - обработка
.epf 49,85Kb
53
.epf 49,85Kb 53 Скачать

 

Как это работает?

Лучше увидеть. Демонстрация на видео - соединение организаций баз данных по их ссылкам. Заранее знаем, что некоторые организации в базу Б были перенесены ранее из базы А:

Прямая ссылка на youtube

 

Внутренние процессы, происходившие при действиях в видео, легче понять по схеме:

 

 

Вас интересует самое необычное - как переносится ссылка на объект? Смотрим схему преобразования:

 

 

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

А что если сопоставление не выполнено пользователем и имена объектов метаданных разные? Например, нужно сравнить справочники "Контрагенты" и "Клиенты". Передать же из одной базы данных в другую при этом что-то нужно. Для этого я сделал текстовое представление ссылки, удобное для восприятия. Представление состоит из трех частей - источника ссылки, имени объекта метаданных и уникальный идентификатор ссылки:

Ext:::Справочник.Клиенты:::6daa4786-ae81-11ec-abee-00e04c362ccc

 

Преобразование ссылок лучше видно на примере работы с параметрами запроса:

Прямая ссылка на youtube

То, что мы видим как "<Объект не найден> (37:ac4600e04c362ccc11ecfdb3a32b1108)" - является полноценной ссылкой в базе данных на какой то объект (который не существует). Это значит, что мы можем использовать эту ссылку в запросе - при соединении таблиц, в условиях запроса и т.д.

 

Когда это нужно?

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

• Между действующими базами А и Б требуется настроить обмен, но ранее часть данных одной информационной базы унаследована из второй базы - например, база Б является копией базы А в далеком прошлом. В таком случае консоль запросов поможет разобраться, какие ссылки есть в обоих базах и не изменили своего логического значения (например, не переименованы), а каких ссылок вовсе нету.

• Трудно отладить кривой обмен данными, элементы пропадают, замещаются или дублируются (например, из за поиска по уникальному идентификатору). Обработка поможет сразу найти разные элементы с одинаковыми уникальными идентификаторами.

• Без использования ссылок на объекты консоль запросов поможет выполнить сравнение большого количества данных по значениям реквизитов примитивных типов - например, по номеру и дате документа.

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

 

Установка и использование

1. Если используете расширение - включаете расширение как обычно. Пользователю нужно добавить роль "Запр_ОсновнаяРоль" из расширения.

ВНИМАНИЕ Разные конфигурации имеют разные режимы совместимости, поэтому свойства совместимости расширения необходимо отредактировать, если оно не подключается.

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

3. Для подключения к внешней информационной базе необходима зарегистрированная в операционной системе компонента com-коннектора 1С (сама компонента находится в папке с платформой). 

4. Параметры подключения к внешней базе задаются через кнопку "Параметры подключения".

5. Для получения таблицы данных из одной базы в другой помещайте полученную запросом таблицу в менеджер временных таблиц.

6. Работа с языком запроса 1С Предприятия никак не изменилась - используйте консоль запросов так, пользовались ей всегда.

 

Дополнительная информация

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

• Расширение нужно для того, чтобы COM-объект с подключением к внешней базе не создавался каждый раз при выполнении запроса. Обработка из расширения работает как самостоятельно, так и с подключенным расширением.

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

Тестировалось на платформе 8.3.20.1549 (x64), но будет работать и на более ранних версиях, т.к. в расширении и обработке ничего из нового функционала платформы не используется.

 

Внимание!

Тем, кто скачивает обработку, а не расширение: добавьте самостоятельно общий модуль. Это значительно ускорит работу обработки. При выполнении запроса каждый раз создается новый экземпляр соединения. Это занимает 1-2 секунды. С общим же модулем соединение с внешним источником остается одно и тоже, его не нужно создавать каждый раз.

Функция ПолучитьСоединениеСВнешнимИсточником(ВерсияCOMКоннектора, ПараметрыПодключенияИБ) Экспорт

	COMКоннектор = Новый COMОбъект(ВерсияCOMКоннектора);
	Возврат COMКоннектор.Connect(ПараметрыПодключенияИБ);
	
КонецФункции

Обмен обмен данными консоль запросов COM-соединение менеджер временных таблиц инструменты

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    122180    670    389    

714

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7298    21    6    

39

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3545    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177760    1073    0    

849

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

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

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

5000 руб.

07.02.2018    99349    239    97    

296

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

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

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

3000 руб.

27.08.2019    18118    6    8    

40

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

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

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

2040 руб.

27.12.2017    28111    3    10    

15

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

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

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

2400 руб.

24.09.2019    23605    15    15    

32
Отзывы
10. Saipl 7 08.07.22 10:05 Сейчас в теме
Однозначно +
Надоело ВПР-ом пользоваться, ещё не пробовал но думаю отличная замена.
mythos; acces969; +2 Ответить
15. war41k 303 19.07.22 19:05 Сейчас в теме
Отличная обработка спасибо рекомендую, очень выручает при переходах для сравнения конвертации, между разными и одинаковыми базами
mythos; acces969; +2 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 07.07.22 14:22 Сейчас в теме
На видео ерунда какая-то получилась в итоге.
1. Почему локальная ссылка называется ООО Зеленоглазое такси? В локальной базе нет такой организации.
2. Почему локальная ссылка ООО Моя оборона битая? Хотя в списке организаций видно, что там все в порядке.
2. acces969 343 07.07.22 14:32 Сейчас в теме
(1) На видео этот запрос выполнялся на стороне внешней информационной базы.
4. TMV 14 07.07.22 14:37 Сейчас в теме
(2) Ну то есть, представление ссылки во внешней БД вы можете получить, а из локальной! не можете? Не кажется не логичным?
6. acces969 343 07.07.22 14:45 Сейчас в теме
(4) Если запрос выполняется на стороне внешней информационной базы, то и ссылка локальной БД будет доступна в результате запроса либо представлением ссылки, либо битой ссылкой, либо сопоставленной ссылкой. Именно результат преобразования ссылки во внешней базе данных вы и видите в результате запроса.
Я могу выводить представление ссылки так, как она выглядит в локальной БД - ведь обработка запущена здесь же, в локальной БД. Но это будет неправильно, это противоречит самой логике работы этого инструмента.
7. TMV 14 07.07.22 15:44 Сейчас в теме
(6) Не вижу противоречия. У вас полное соединение двух таблиц - не должно быть никаких битых ссылок.
Если ссылка битая, то и все ее поля тоже должны бить битыми (или null) - это логично.
8. anteros76 07.07.22 16:34 Сейчас в теме
(7) Ссылка не преобразовалась, а примитивный тип (наименование) перешел из базы в базу нормально. Другое дело, если бы наименование бралось из битой ссылки, что невозможно.
acces969; +1 Ответить
12. TMV 14 08.07.22 20:09 Сейчас в теме
(8) Ссылка внешней! базы преобразовалась, а ссылка локальной! - нет. Л - логика.
3. TMV 14 07.07.22 14:34 Сейчас в теме
На мой взгляд для обмена между базами это не годится - только для сравнения с копией.
Не помню, чтоб в каких-либо обменах в принципе было такое сопоставление ссылок, тем более между разными! объектами метаданных.
5. acces969 343 07.07.22 14:38 Сейчас в теме
(3) Бывает, попадаются такие правила. Конвертация данных изначально создает правила с поиском по УИД. Вот самописные правила и грешат этим. А когда пользователи переименуют элемент справочника на совсем другое значение - очень удивляются, куда десятками подряд исчезают их элементы из базы.
9. ilyakurdubov 08.07.22 09:50 Сейчас в теме
10. Saipl 7 08.07.22 10:05 Сейчас в теме
Однозначно +
Надоело ВПР-ом пользоваться, ещё не пробовал но думаю отличная замена.
mythos; acces969; +2 Ответить
13. alexzubec 11.07.22 10:08 Сейчас в теме
(10) Тогда посмотрите в сторону Power Query, покрывает весь спектр задач сравнения данных и не только.
11. dka80 20 08.07.22 11:51 Сейчас в теме
(10) если надоел впр, попробуй цветовое выделение различных/совпадающих ))
acces969; +1 Ответить
14. Saipl 7 11.07.22 13:54 Сейчас в теме
(13) (10) Инструментов много, но для них необходимо "готовить" данные.
15. war41k 303 19.07.22 19:05 Сейчас в теме
Отличная обработка спасибо рекомендую, очень выручает при переходах для сравнения конвертации, между разными и одинаковыми базами
mythos; acces969; +2 Ответить
16. kembrik 10 22.07.22 11:21 Сейчас в теме
Писал нечто подобное в свое время- у меня еще "Объект не найден" на регистрацию вставал автоматом, это все красиво работает при сравнении на уровне справочников, и то без допреквизитов в табличных частях.

Как только надо сравнить документы в разных базах , да еще с табличными частями, начинаются как правило пляски с добавлением GUID каждой строки, Рибовские базы еще туда-сюда, а вот проконтролировать как из Ут в Бух выгрузилось, колдуя с превращением характеристик в номенклатуру, схлопывая попутно и укрупняя - брр. В итоге перешел на сравнения вьюх подготовленных в SQL базах в человекочитаемом виде
17. yuha33 01.06.23 10:14 Сейчас в теме
Я так понимаю сохранения сеанса работы нет, надо самому куда-то как-то все сохранять?
18. acces969 343 01.06.23 12:34 Сейчас в теме
(17) Если используется расширение, но сеанс с внешней базой кэшируется и хранится примерно 20 минут. Хотя я не понял вашего вопроса, можно конкретнее?
19. yuha33 01.06.23 12:45 Сейчас в теме
Используется расширение. Запросы по клиентам. Второй комплект по номенклатуре. Как их сохранить, что бы открыть нужный потом? Сейчас открывается последняя сессия у меня. Есть такой функционал?
acces969; +1 Ответить
20. acces969 343 01.06.23 12:57 Сейчас в теме
(19) Помещайте результат запроса во временную таблицу при выполнении запроса - так она сохранится в табличной части обработки, это то, что вам нужно. В последующем эту таблицу можно получить, обращаясь к ней как к виртуальной таблице менеджера временных таблиц на языке запросов.

Первый запрос к внешней БД:
"ВЫБРАТЬ Код, Наименование, Ссылка ПОМЕСТИТЬ ВТ1 ИЗ Справочник.Клиенты КАК Клиенты"

Второй запрос в локальной БД:
"ВЫБРАТЬ * ИЗ ВТ1 КАК Клиенты"
21. yuha33 01.06.23 13:13 Сейчас в теме
Оставьте свое сообщение