Com соединение

  • автор:

Внешнее соединение — это один из механизмов интеграции с другими системами. Основная задача, решаемая с помощью внешнего соединения — обеспечение надежного и быстрого программного доступа к данным 1С:Предприятия 8 из внешних приложений.

Отличия от Automation-сервера

В общем и целом работа через внешнее соединение подобна работе в режиме Automation-сервера. Основные отличия заключаются в следующем:

  • В случае Automation-сервера запускается полноценное приложение 1С:Предприятие 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер.
  • При работе через внешнее соединение недоступны функциональные возможности так или иначе связанные с организацией пользовательского интерфейса;
  • При работе внешнего соединения не используется модуль приложения. Его роль при работе с внешним соединением играет модуль внешнего соединения.

Преимущества

При использовании внешнего соединения имеются следующие преимущества по сравнению с использованием Automation-сервера:

  • более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
  • более быстрое обращение к свойствам и методам объектов 1С:Предприятия 8, так как для организации обращения не требуется организации межпроцессной коммуникации;
  • меньший расход ресурсов операционной системы.

Пример

Для организации доступа к данным системы 1С:Предприятие 8 через внешнее соединение, выполняется следующая последовательность действий:

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

В качестве примера можно привести обращение к информационной базе 1С:Предприятия 8 через внешнее соединение из программы на языке MS Visual Basic.

Информационная база находится в каталоге c:\InfoBases\Trade. В программе 1С:Предприятие 8 создается объект типа СправочникМенеджер.Товары и создается новая группа элементов с названием ***** Экспорт из Excel ******. Во вновь созданную группу каталога записываются данные из таблицы MS Excel:

Sub Excel_to_trade ()

Dim cntr As Object
Dim trade As Object
Dim Элемент As Object

ГруппаТоваров.Наименование = «***** Экспорт из Excel ******»
ГруппаТоваров.Записать

N = 100 ‘Количество строк в документе
For Count = 1 To N

Элемент.Записать

Next Count

End Sub

Контекст исполнения

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

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

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

  • системные константы;
  • значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры);
  • переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.

В качестве своих методов внешнее соединение может иметь:

  • системные процедуры и функции;
  • процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт;
  • дополнительный метод NewObject.

Пул соединений

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

Варианты использования

С помощью внешнего соединения можно, например, организовать веб-доступ к базе данных 1С:Предприятия 8:

Также внешнее соединение позволяет организовать обмен XML-документами системы 1С:Предприятие 8 с внешним приложением:

Технологии интеграции 1С:Предприятия 8.3

Авторы: Е.Ю. Хрусталева

Обмен данными между базами 1С через COM соединение

рубрики: COM | Дата: 2 апреля, 2014

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

Можно создать два вида COM объектов для приложения 1С. Это V82.Application и V82.COMConnector. В случае с V82.Application запускается практически полноценный экземпляр приложения 1С. в случае использования V82.COMConnector запускается небольшая серверная часть.
Скорость работы в этом случае выше, но некоторые функции могут быть недоступны. В частности работа с формами и с общими модулями для которых не установлено свойство работы с внешними соединениями. Преимущественно надо использовать V82.COMConnector и только в случае нехватки функционала V82.Application. Особенно сильно разница в скорости работы может быть заметна на базах большого объема.

Итак, приступим

  1. Создадим COM объект
    • для V82.Application Соединение = Новый COMОбъект(«V82.Application»);
    • для V82.COMConnector Соединение = Новый COMОбъект(«V82.COMConnector»);
  2. Сформируем строку подключения
    • для серверного варианта базы СтрокаСоединения = «Srvr = «»ИмяСервера»»;Ref = «»ИмяБазы»»; Usr = ИмяПользователя; Pwd = Пароль»;
    • для файлового варианта базы СтрокаСоединения = «File = «»ПутьКБазе»»; Usr = ИмяПользователя; Pwd = Пароль»;
  3. Выполняем подключение к базе Попытка Подключение = Соединение.Connect(СтрокаСоединения); Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «Не удалось подключиться к базе» + ОписаниеОшибки(); Сообщение.Сообщить(); КонецПопытки;
  4. Разрываем соединение с базой Соединение = Неопределено;

    Для объекта V82.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V82.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.И есть еще один маленький момент.
    Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.

А теперь соберем весь код в кучу

Соединение = Новый COMОбъект(«V82.Application»); //Соединение = Новый COMОбъект(«V82.COMConnector»); СтрокаСоединения = «Srvr = «»Server1C»»;Ref = «»MyBase»»; Usr = Петя; Pwd = 123″; //СтрокаСоединения = «File = «»С:\MyBase»»; Usr = Петя; Pwd = 123″; Попытка Подключение = Соединение.Connect(СтрокаСоединения); Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «Не удалось подключиться к базе» + ОписаниеОшибки(); Сообщение.Сообщить(); КонецПопытки; Соединение = Неопределено;

Далее можно например воспользоваться методом NewObject(), чтобы создать запрос, и с его помощью прочитать данные из базы к которой подключались.
Для вида подключения V82.Application метод применяется для COM объекта, который создавался изначально, а для V82.COMConnector метод применяется к подключению. далее работа с запросом идет стандартными средствами 1С. в коде это выглядит так:

Запрос = Подключение.NewObject(«Запрос»); // для V82.COMConnector Запрос = Соединение.NewObject(«Запрос»); // для V82.Application Запрос.Текст = «ВЫБРАТЬ | ДолжностиОрганизаций.Код, | ДолжностиОрганизаций.Наименование |ИЗ | Справочник.ДолжностиОрганизаций КАК ДолжностиОрганизаций»; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла;

Для версии 1С:Предприятие 8.3 все остается без изменений за исключением того, что при создании COMОбъектов надо использовать «V83.COMConnector» или «V83.Application».

  1. Владимир:

    Прям то что нужно, ничего лишнего, огромное спасибо!!!

  2. Константин:

    Хочу добавить один момент, касательно запроса, хотя он может встретиться и в других местах. Мне необходимо было передать массив в качестве параметра. Обычная конструкция
    Массив = Новый Массив не сработала, так как массив создавался на моей стороне и при попытке передать в запрос появлялась ошибка «Неверный параметр». Необходимо определять запрос на стороне удаленного приложения, там его пытаться заполнить и только так передавать его в запрос.
    То же самое и для других объектов, которые создаются при помощи конструктора Новый.

  3. Петр:

    Полезно пишете

    • Owner:

      Спасибо. Правда нынче COM уже не так актуально. Веб-сервисы больше в почете)

COM соединение служит для установки соединения с другими базами 1С. В этой статье узнаем основы работы с этим классом, как выполнять запросы через COM соединение и разберем несколько примеров.

  • Как создать COM объект?
  • Примеры работы с COM объектом
  • Основы принципы работы с COM соединением

Для чего нужно COM Соединение?

Этот объект используется для установки соединения с другими базами 1С. Например, Вам нужно сделать выгрузку справочника «Контрагенты» из одной базы, в другую или получить какие либо данные из другой базы 1С. Вы сможете это реализовать при помощи COM Соединения.

Как создать COM объект?

В начале надо узнать, какая версия 1С у вас, из этого и будем исходить при создании COM объекта.

  • Для 1С 8.2: COMConnector= Новый COMОбъект(«V82.COMConnector»);
  • Для 1С 8.3: COMConnector= Новый COMОбъект(«V83.COMConnector»);

Функция ПолучитьПодключение(СтрокаПодключения)
Попытка
//Создаем COM Объект
V83COMConnector= Новый COMОбъект(«V83.COMConnector»);
//Выполняем подключение к информационной базе
База = V83COMConnector.Connect(СтрокаПодключения);
Возврат База;
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
КонецФункции

Переменная «СтрокаПодключения» может быть двух видов:

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

Примеры работы с COM объектом

Для примера рассмотрим ситуацию, когда нам нужно через COM соединение создать склад:

Обратите внимание что «ВидСклада» мы указали через переменную «COMСоединение».

Так же часто требуется выполнить запрос через COM соединение, разберем пример на основе тех же складов:

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

Основы принципы работы с COM соединением

  • Все объекты, полученные через COM соединения, имеют тип COMОбъект, из за этого мы можем передать только простые типы, такие как: число. строка, дата, булево.
  • Для того чтобы получить элементы справочников, ссылки на документы и т.д. нужно использовать стандартные функции языка 1С. Например: НайтиПоРеквизиту(); НайтиПоНаименованию(); Выборкой; Запросами и т.д..
  • В результате каждого подключения будет задействована одна лицензия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *