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

22.04.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Консоль запросов к двум базам - расширение
.cfe 53,21Kb ver:1.0
29
29 Скачать (4 SM) Купить за 2 750 руб.
Консоль запросов к двум базам - обработка
.epf 49,85Kb ver:1.0
55
55 Скачать (3 SM) Купить за 2 450 руб.
Консоль запросов к двум базам - обработка
.epf 50,05Kb ver:1.1
10
10 Скачать (3 SM) Купить за 2 450 руб.

 

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

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

Прямая ссылка на 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(ПараметрыПодключенияИБ);
	
КонецФункции

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.151.27

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

См. также

SALE! %

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

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

12000 10000 руб.

02.09.2020    165851    921    403    

894

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    10152    85    36    

92

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

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

9360 руб.

17.05.2024    25390    86    48    

130

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

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

22200 руб.

06.10.2023    16342    40    9    

75

SALE! %

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

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

15000 10000 руб.

10.11.2023    11098    40    27    

66

SALE! %

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

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

4800 3840 руб.

14.01.2013    189647    1146    0    

916

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

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

2220 руб.

21.02.2023    8390    8    38    

24

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

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

5000 руб.

07.02.2018    103631    244    100    

306
Отзывы
10. Saipl 7 08.07.22 10:05 Сейчас в теме
Однозначно +
Надоело ВПР-ом пользоваться, ещё не пробовал но думаю отличная замена.
mythos; acces969; +2 Ответить
15. war41k 99 19.07.22 19:05 Сейчас в теме
Отличная обработка спасибо рекомендую, очень выручает при переходах для сравнения конвертации, между разными и одинаковыми базами
mythos; acces969; +2 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 07.07.22 14:22 Сейчас в теме
На видео ерунда какая-то получилась в итоге.
1. Почему локальная ссылка называется ООО Зеленоглазое такси? В локальной базе нет такой организации.
2. Почему локальная ссылка ООО Моя оборона битая? Хотя в списке организаций видно, что там все в порядке.
2. acces969 362 07.07.22 14:32 Сейчас в теме
(1) На видео этот запрос выполнялся на стороне внешней информационной базы.
4. TMV 14 07.07.22 14:37 Сейчас в теме
(2) Ну то есть, представление ссылки во внешней БД вы можете получить, а из локальной! не можете? Не кажется не логичным?
6. acces969 362 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 362 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 21 08.07.22 11:51 Сейчас в теме
(10) если надоел впр, попробуй цветовое выделение различных/совпадающих ))
acces969; +1 Ответить
14. Saipl 7 11.07.22 13:54 Сейчас в теме
(13) (10) Инструментов много, но для них необходимо "готовить" данные.
15. war41k 99 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 362 01.06.23 12:34 Сейчас в теме
(17) Если используется расширение, но сеанс с внешней базой кэшируется и хранится примерно 20 минут. Хотя я не понял вашего вопроса, можно конкретнее?
19. yuha33 01.06.23 12:45 Сейчас в теме
Используется расширение. Запросы по клиентам. Второй комплект по номенклатуре. Как их сохранить, что бы открыть нужный потом? Сейчас открывается последняя сессия у меня. Есть такой функционал?
acces969; +1 Ответить
20. acces969 362 01.06.23 12:57 Сейчас в теме
(19) Помещайте результат запроса во временную таблицу при выполнении запроса - так она сохранится в табличной части обработки, это то, что вам нужно. В последующем эту таблицу можно получить, обращаясь к ней как к виртуальной таблице менеджера временных таблиц на языке запросов.

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

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