С помощью COM и OLE соединения можно из одной базы 1С подключиться к другой и прочитать или записать данные.
Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах.
Существует два вида COM объектов для приложения 1С:
Ole соединение V83.Application
Com соединение V83.COMConnector
В случае с V83.Application запускается практически полноценный экземпляр приложения 1С. В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны.
В частности работа с формами и с общими модулями для которых, не установлено свойство работы с внешними соединениями. По большей части нужно использовать V83.COMConnector и только в случае нехватки функционала V83.Application.
Особенно сильно разница в скорости работы может быть заметна на базах большого объема.
Для платформы 1С 8.2 используется V82.Application или V82.COMConnector
Как перенести базу 1С 8.3 на другой компьютер — урок для начинающих
Источник: okolokompa.com
Подключение к базе 1С через COM
Ниже представлены примеры подключения к серверной и файловой базам:
// Подключение к серверной базе
Соединение = Новый COMОбъект ( «V83.COMConnector» );
ПараметрыДоступа = «Srvr=»»Сервер»»;Ref=»»ИмяБазы»»;Usr=»»Пользователь»»;Pwd=»» ПарольПользователя «»;» ;
Попытка
База = Соединение . Connect ( ПараметрыДоступа );
Исключение
Сообщить ( «Проблемы при подключении: » + ОписаниеОшибки ());
Возврат;
КонецПопытки;
// Подключение к файловой базе
Соединение = Новый COMОбъект ( «V83.COMConnector» );
ПараметрыДоступа = «File=»» ПутьККаталогуБазы «»;Usr=»»Пользователь»»;Pwd=»» ПарольПользователя «»;» ;
Попытка
База = Соединение . Connect ( ПараметрыДоступа );
Исключение
Сообщить ( «Проблемы при подключении: » + ОписаниеОшибки ());
Возврат;
КонецПопытки;
Примеры обращения к данным другой базы
// Поиск и изменение справочника
НайденныйСпр = База . Справочники . Номенклатура . НайтиПоКоду ( «12345» );
Если НайденныйСпр = База . Справочники . Номенклатура . ПустаяСсылка () Тогда
Сообщить ( «Справочник не найден» );
Иначе
СпрОбъект = НайденныйСпр . ПолучитьОбъект ();
СпрОбъект . Описание = «Описание» ;
СпрОбъект . Записать ();
КонецЕсли;
// Работа с запросом
Запрос = База . NewObject ( «Запрос» );
Запрос . Текст =
«ВЫБРАТЬ
| Контрагенты.Наименование
Как перенести 1С на другой компьютер?
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЮрФизЛицо = ;
Запрос . УстановитьПараметр ( «ЮрФизЛицо» , База . Перечисления . ЮрФизЛицо . ФизЛицо );
Выборка = Запрос . Выполнить (). Выбрать ();
Пока Выборка . Следующий () Цикл
Сообщить ( Выборка . Наименование );
КонецЦикла;
Методы БСП
В библиотеке стандартных подсистем(БСП) предусмотрены методы для работы с 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С:Предприятия или веб-сервере.
Источник: pro1c8.ru
COM соединение в 1С 8.3 на примере
Перенос данных из одной информационной базы в другую можно осуществить при помощи конвертации данных, либо типовой обработки по загрузке/выгрузке.
Иногда стандартного функционала не достаточно, например, когда нужно применить сложные алгоритмы обработки данных. В таких случаях целесообразнее использовать в 1С 8.3 COM-соединение. Этот механизм позволяет подсоединиться к другой базе и получать из нее все необходимые данные. Такой способ отличается повышенным быстродействием и надежностью.
Реализация COM-соединения
В нашем примере мы сделаем простую обработку 1С, которая будет выводить все номера и суммы документов реализации за указанный период. Примеров применения существует много, но в рамках данной статьи важно понять основные принципы работы с COM-соединениями. Данный пример доступен для скачивания по ссылке.
Обратите внимание, что способ подключения к файловым и клиент-серверным базам отличается. Мы будем применять «V83.COMConnector», так как работа идет с базами на платформе 8.3. Следовательно, для более низких версий будут использоваться COMConnector V81 и V82 соответственно.
File color: black;»>»D:BUH30″»; Usr color: black;»>»administrator»»;Pwd color: black;»>»123456″»»; // Данный формат используется для подключения к клиент-сервер.
ИБ // ПараметрыПодключенияИБ = «Srvr=»»НаименованиеСервера»»;Ref=»»ИмяИБ»»;Usr=»»ЛогинПользователя»»;Pwd=»»ПарольПользователя»»; V83COMCon= Новый COMОбъект(«V83.COMConnector»); Попытка Возврат V83COMCon.Connect(ПараметрыПодключенияИБ); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; КонецФункции
Следующим нашим шагом будет добавление на форму табличной части, в которую будут выводиться данные. Так нужно указать поля для ввода периода, по которому будут отбираться документы. Сама процедура заполнения будет выполняться при нажатии соответствующей кнопки со следующим кодом:
Если ТипЗнч(СоединениеБУХ) > Тип(«Неопределено») Тогда ЗапросБП30 = СоединениеБУХ.NewObject(«Запрос»); ЗапросБП30.
Текст = «ВЫБРАТЬ | РеализацияТУ.Номер КАК Номер, | РеализацияТУ.СуммаДокумента КАК СуммаДокумента |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТУ |ГДЕ | РеализацияТУ.Проведен = ИСТИНА | И РеализацияТУ.Дата МЕЖДУ ДатаО»; ЗапросБП30.УстановитьПараметр(«ДатаН», Объект.
ДатаН); ЗапросБП30.УстановитьПараметр(«ДатаО», Объект.ДатаО); Объект.СписокДокументов = ЗапросБП30.Выполнить().
Выгрузить(); КонецЕсли; КонецПроцедуры
После выполнения наша обработка будет выглядеть так, как показано на рисунке ниже.
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Источник: 1s83.info