Как это работает?
Лучше увидеть. Демонстрация на видео - соединение организаций баз данных по их ссылкам. Заранее знаем, что некоторые организации в базу Б были перенесены ранее из базы А:
Внутренние процессы, происходившие при действиях в видео, легче понять по схеме:
Вас интересует самое необычное - как переносится ссылка на объект?
Смотрим схему преобразования:
По схеме видно, что ссылка на объект внешней базы данных преобразуется в ссылку локальной базы, если есть сопоставление метаданных или имена объектов метаданных в информационных базах одинаковые. Преобразование простое - средствами 1С создается ссылка на объект информационной базы. Существует ли объект по этой ссылке - мы уже видим в результате запроса или в результате соединения таблиц.
А что если сопоставление не выполнено пользователем и имена объектов метаданных разные?
Например, нужно сравнить справочники "Контрагенты" и "Клиенты". Передать же из одной базы данных в другую при этом что-то нужно. Для этого я сделал текстовое представление ссылки, удобное для восприятия. Представление состоит из трех частей - источника ссылки, имени объекта метаданных и уникальный идентификатор ссылки:
Ext:::Справочник.Клиенты:::6daa4786-ae81-11ec-abee-00e04c362ccc
Преобразование ссылок лучше видно на примере работы с параметрами запроса:
То, что мы видим как "<Объект не найден> (37:ac4600e04c362ccc11ecfdb3a32b1108)" - является полноценной ссылкой в базе данных на какой то объект (который не существует). Это значит, что мы можем использовать эту ссылку в запросе - при соединении таблиц, в условиях запроса и т.д.
Установка и использование
- Если используете расширение - включаете расширение как обычно. Пользователю нужно добавить роль "Запр_ОсновнаяРоль" из расширения.
ВНИМАНИЕ! Разные конфигурации имеют разные режимы совместимости, поэтому свойства совместимости расширения необходимо отредактировать, если оно не подключается.
- Разницы нету, как запускать обработку - из файла или встроенную в расширение. Обработка одна и та же, в программном коде происходит определение способа работы автоматически.
- Для подключения к внешней информационной базе необходима зарегестрированная в операционной системе компонента com-коннектора 1С (сама компонента находится в папке с платформой, регистрация осуществляется через командную строку Windows).
- Параметры подключения к внешней базе задаются через кнопку "Параметры подключения".
- Для получения таблицы данных из одной базы в другой помещайте полученную запросом таблицу в менеджер временных таблиц.
- Работа с языком запроса 1С Предприятия никак не изменилась - используйте консоль запросов так, пользовались ей всегда.
Когда это нужно?
- Пример: обмен данными между базами был, но перестал работать на длительное время. Из за этого между базами появилась рассинхронизация данных, так как создавались справочники или документы в обоих базах. Обработка покажет списком созданные и измененные элементы из обоих информационных баз.
- Между действующими базами А и Б требуется настроить обмен, но ранее часть данных одной информационной базы унаследована из второй базы - например, база Б является копией базы А в далеком прошлом. В таком случае консоль запросов поможет разобраться, какие ссылки есть в обеих базах и не изменили своего логического значения (например, не переименованы), а каких ссылок вовсе нету.
- Трудно отладить кривой обмен данными, элементы пропадают, замещаются или дублируются (например, из-за поиска по уникальному идентификатору). Обработка поможет сразу найти разные элементы с одинаковыми уникальными идентификаторами.
- Без использования ссылок на объекты консоль запросов поможет выполнить сравнение большого количества данных по значениям реквизитов примитивных типов - например, по номеру и дате документа.
- Не обязательно справочники сравнивать только со справочниками - бывает так, что требуется проверить данные при преобразовании одной структуры данных в другую, например - справочников в документы или регистры сведений.
Дополнительная информация
- Логика в обработке отзеркалена, поэтому все операции можно выполнять как из локальной во внешнюю, так и во внешней в локальную базу данных.
- Расширение нужно для того, чтобы COM-объект с подключением к внешней базе не создавался каждый раз при выполнении запроса. Обработка из расширения работает как самостоятельно, так и с подключенным расширением.
- Подключать расширение во внешней информационной базе не нужно - все что требуется от внешней базы данных - чтобы пользователь, через которого мы подключаемся, имел необходимые права. А вот в той базе, где требуется использование обработки, пользователю нужно добавить роль из расширения - иначе подсистема расширения не будет видна.
Тестировалось на платформе 8.3.20.1549 (x64), но будет работать и на более ранних версиях, т.к. в расширении и в обработке ничего из нового функционала платформы не используется.
Внимание!
Тем, кто приобретает обработку, а не расширение: добавьте самостоятельно общий модуль. Это значительно ускорит работу обработки. При выполнении запроса каждый раз создается новый экземпляр соединения. Это занимает 1-2 секунды. С общим же модулем соединение с внешним источником остается одно и тоже, его не нужно создавать каждый раз.
Для добавление комментария необходимо авторизоваться.
Вход | Регистрация