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

22.04.24

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Консоль запросов к двум базам - расширение
.cfe 53,21Kb ver:1.0
33 2 750 руб. Купить
Консоль запросов к двум базам - обработка
.epf 49,85Kb ver:1.0
58 2 450 руб. Купить
Консоль запросов к двум базам - обработка
.epf 50,05Kb ver:1.1
19 2 450 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

 

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

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

Прямая ссылка на 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-соединение менеджер временных таблиц инструменты

См. также

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

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

15500 руб.

02.09.2020    205729    1130    410    

1028

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

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

8400 руб.

20.08.2024    36791    211    109    

198

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

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

16000 руб.

10.11.2023    16771    73    39    

89

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24358    65    28    

93

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

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

9500 руб.

17.05.2024    35304    128    53    

170

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    2014    1    0    

8

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

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

6000 руб.

07.02.2018    107686    249    100    

313
Отзывы
10. Saipl 7 08.07.22 10:05 Сейчас в теме
Однозначно +
Надоело ВПР-ом пользоваться, ещё не пробовал но думаю отличная замена.
mythos; acces969; +2 Ответить
15. war41k 410 19.07.22 19:05 Сейчас в теме
Отличная обработка спасибо рекомендую, очень выручает при переходах для сравнения конвертации, между разными и одинаковыми базами
mythos; acces969; +2 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 3 07.07.22 14:22 Сейчас в теме
На видео ерунда какая-то получилась в итоге.
1. Почему локальная ссылка называется ООО Зеленоглазое такси? В локальной базе нет такой организации.
2. Почему локальная ссылка ООО Моя оборона битая? Хотя в списке организаций видно, что там все в порядке.
2. acces969 375 07.07.22 14:32 Сейчас в теме
(1) На видео этот запрос выполнялся на стороне внешней информационной базы.
4. TMV 3 07.07.22 14:37 Сейчас в теме
(2) Ну то есть, представление ссылки во внешней БД вы можете получить, а из локальной! не можете? Не кажется не логичным?
6. acces969 375 07.07.22 14:45 Сейчас в теме
(4) Если запрос выполняется на стороне внешней информационной базы, то и ссылка локальной БД будет доступна в результате запроса либо представлением ссылки, либо битой ссылкой, либо сопоставленной ссылкой. Именно результат преобразования ссылки во внешней базе данных вы и видите в результате запроса.
Я могу выводить представление ссылки так, как она выглядит в локальной БД - ведь обработка запущена здесь же, в локальной БД. Но это будет неправильно, это противоречит самой логике работы этого инструмента.
7. TMV 3 07.07.22 15:44 Сейчас в теме
(6) Не вижу противоречия. У вас полное соединение двух таблиц - не должно быть никаких битых ссылок.
Если ссылка битая, то и все ее поля тоже должны бить битыми (или null) - это логично.
8. anteros76 07.07.22 16:34 Сейчас в теме
(7) Ссылка не преобразовалась, а примитивный тип (наименование) перешел из базы в базу нормально. Другое дело, если бы наименование бралось из битой ссылки, что невозможно.
acces969; +1 Ответить
12. TMV 3 08.07.22 20:09 Сейчас в теме
(8) Ссылка внешней! базы преобразовалась, а ссылка локальной! - нет. Л - логика.
3. TMV 3 07.07.22 14:34 Сейчас в теме
На мой взгляд для обмена между базами это не годится - только для сравнения с копией.
Не помню, чтоб в каких-либо обменах в принципе было такое сопоставление ссылок, тем более между разными! объектами метаданных.
5. acces969 375 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 410 19.07.22 19:05 Сейчас в теме
Отличная обработка спасибо рекомендую, очень выручает при переходах для сравнения конвертации, между разными и одинаковыми базами
mythos; acces969; +2 Ответить
16. 1cembreg 22 22.07.22 11:21 Сейчас в теме
Писал нечто подобное в свое время- у меня еще "Объект не найден" на регистрацию вставал автоматом, это все красиво работает при сравнении на уровне справочников, и то без допреквизитов в табличных частях.

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

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

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