Подключение к базе 1С через COM

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

Подключение к базе

Для подключения к базе 1С через COM необходимо:

  1. Создать COM-объект 1С необходимой версии ([V8;V81;V82;V83].COMConnector);
  2. Подключиться к базе при помощи метода Connect(), указав параметры доступа.

Ниже представлены примеры подключения к серверной и файловой базам:

// Подключение к серверной базе
Соединение = Новый COMОбъект("V83.COMConnector");
ПараметрыДоступа = "Srvr=""Сервер"";Ref=""ИмяБазы"";Usr=""Пользователь"";Pwd=""ПарольПользователя"";";
Попытка

База = Соединение.Connect(ПараметрыДоступа);
Исключение

Сообщить("Проблемы при подключении: " + ОписаниеОшибки());
Возврат;
КонецПопытки;

// Подключение к файловой базе
Соединение = Новый COMОбъект("V83.COMConnector");
ПараметрыДоступа = "File=""ПутьККаталогуБазы"";Usr=""Пользователь"";Pwd=""ПарольПользователя"";";
Попытка

База = Соединение.Connect(ПараметрыДоступа);
Исключение

Сообщить("Проблемы при подключении: " + ОписаниеОшибки());
Возврат;
КонецПопытки;

Примеры обращения к данным другой базы

// Поиск и изменение справочника
НайденныйСпр = База.Справочники.Номенклатура.НайтиПоКоду("12345");
Если
НайденныйСпр = База.Справочники.Номенклатура.ПустаяСсылка() Тогда
Сообщить("Справочник не найден");
Иначе

СпрОбъект = НайденныйСпр.ПолучитьОбъект();
СпрОбъект.Описание = "Описание";
СпрОбъект.Записать();
КонецЕсли;

// Работа с запросом
Запрос = База.NewObject("Запрос");
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЮрФизЛицо = &ЮрФизЛицо"
;
Запрос.УстановитьПараметр("ЮрФизЛицо", База.Перечисления.ЮрФизЛицо.ФизЛицо);

Выборка = Запрос.Выполнить().Выбрать();
Пока
Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;

Методы БСП

В библиотеке стандартных подсистем(БСП) предусмотрены методы для работы с COM-подключениями. Вот некоторые из них:

  • ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя() — возвращает имя COM-класса для работы с 1С:Предприятием через COM-соединение (например, «v83.COMConnector»).
  • ОбщегоНазначения.ИдентификаторCOMСоединителя(Знач ИмяCOMСоединителя) — возвращает CLSID COM-класса для работы с 1С:Предприятием 8 через COM-соединение (для v83.COMConnector — «181E893D-73A4-4722-B61D-D604B3D67D47»).
  • ОбщегоНазначенияКлиентСервер.УстановитьВнешнееСоединениеСБазой(Параметры) — устанавливает внешнее соединение с информационной базой по переданным параметрам подключения и возвращает указатель на это соединение.
  • СоединенияИБ.ИнформацияОСоединениях(ПолучатьСтрокуСоединения = Ложь, СообщенияДляЖурналаРегистрации = Неопределено, ПортКластера = 0) — возвращает структуру, из которой можно узнать, есть ли в текущий момент COM-соединения с базой.

Примеры использования:

COMСоединитель = Новый COMОбъект(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя());

CLSID = ОбщегоНазначения.ИдентификаторCOMСоединителя(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя());

Результат = ОбщегоНазначенияКлиентСервер.УстановитьВнешнееСоединениеСБазой(Параметры);

ТекущиеСоединения = СоединенияИБ.ИнформацияОСоединениях(Истина);

Лицензирование

Для каждого COM-соединения расходуется одна лицензия. Лицензии ищутся в следующем порядке:

  1. локальные клиентские лицензии;
  2. локальные серверные лицензии;
  3. сетевые клиентские лицензии;
  4. клиентские лицензии на сервере 1С:Предприятия или веб-сервере.
Оцените статью