Иногда удобно подключиться через 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С:Предприятия или веб-сервере.