Иногда удобно подключиться через COM из одной базы 1С к другой и иметь доступ одновременно к обоим базам. Такой подход можно использовать для обмена данными.
Подключение к базе
Для подключения к базе 1С через COM необходимо:
- Создать COM-объект 1С необходимой версии ([V8;V81;V82;V83].COMConnector);
- Подключиться к базе при помощи метода 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С:Предприятия или веб-сервере.