Каталог решений - Три кита работы с COM-объектами. Работать через COM-соединение проще, чем вы думаете.

Три кита работы с COM-объектами. Работать через COM-соединение проще, чем вы думаете.

Три кита работы с COM-объектами. Работать через COM-соединение проще, чем вы думаете.

В наличии

Данная статья будет полезна как начинающим, так и продвинутым  программистам, которые по каким – либо причинам до сего времени не сталкивались с работой COM-соединением.
Дочитав эту статью до конца, уже через 15 минут, вы сможете напрямую  «вытягивать» данные из другой информационной базы.

ps: Хочу заранее оговориться, данная статья не претендует на звание полного и исчерпывающего мануала. Скорее всего — это просто указатель движения в правильном направлении, для быстрого освоения работы с Com-соединением.

Категория:

Описание

Когда вам это пригодится.

 

Приведу всего два реальных примера из своей практики:

1.   При работе в типовой конфигурации «Бухгалтерия предприятия 2.0» необходимо получать данные первичных документов из сторонней самописной конфигурации. На основании полученных данных, автоматически создаются документы поступлений. При этом, пользователь работает исключительно в одной базе данных.

2.   Пользователь работает в переферийном узле распределенной ИБ. Необходимо, в режиме Он-Лайн, синхронизировать справочник контрагентов. На этом примере и разберем правила работы с Com – объектами.


Чем отличаются COM и OLE. Почему все же COM.

 

1.   При запуске приложения 1С:

—   OLE использует  модуль обычного приложения. Запуск занимает весьма продолжительно время.

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

    В результате, запуск Com в типовой «Бухгалтерии предприятия 2.0» занимает в 6 раз меньше времени.

2.   При запуске Com – соединения  не создается отдельного процесса 1cv8. По отзывам пользователей партнерского форума 1С, завершение работы Ole происходит не всегда корректно.   И в этом случае наблюдаются ощутимые проблемы с производительностью рабочей станции.

Не вдаваясь в дальнейшие сравнения, даже на основании двух вышеизложенных моментов, я однозначно выбираю COM.

 

Три кита и Кит первый.

 

Создаем соединение к другой базе

Сервер = «Kappa»;
БазаДанных   = «Acc»;
Пользователь = «Администратор»;
Пароль = «123456»;

V82 = Новый COMобъект(«V82.ComConnector»);

СтрокаПодключения «srvr='» + СокрЛП(Сервер)
+
«‘; ref='» + СокрЛП(БазаДанных)
+
«‘; usr='» + СокрЛП(Пользователь)
+
«‘; pwd='» + СокрЛП(Пароль) + «‘;»;

БазаИсточник = V82.Connect(СтрокаПодключения);

Подключение к базе, работающей в файловом режиме, приведено в комментариях к данной публикации.


Кит второй

 

Все объекты, которые вы получаете через Com (у нас это БазаИсточник) имеют тип Com-объект.

Поэтому, непосредственно, мы можем использовать только реквизиты примитивных типов:

— Булево

— Строка

— Число

— Дата

 

Остальные реквизиты мы можем идентифицировать в текущей базе, через поиск:

—  по коду

—  по наименованию

—  по ИНН

—  а для узлов РИБ, наиболее точно, по внутреннему идентификатору.

 

Все Com – объекты обладают полным набором свойств и характеристик языка программирования 1С.

Пример:

СсылкаНаКонтрагента = БазаИсточник.Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», ИНН);

Где, СсылкаНаКонтрагента – тип Com-объект.

КонтрагентГоловной = БазаИсточник.Справочники.Контрагенты.СоздатьЭлемент();

Исключение: в отладчике, у Com-объекта, предопределенные реквизиты имеют только англоязычную транскрипцию. Обычные реквизиты – русскую транскрипцию.

Пример:

КонтрагентСОМ = БазаИсточник.Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», ИНН);

Код = КонтрагентСОМ.Code;
Наименование = КонтрагентСОМ.Description;
НаименованиеПолное = КонтрагентСОМ.НаименованиеПолное;

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

БазаИсточник.ЗаполнитьЗначениеСвойств(ТекущийКонтрагент, КонтрагентCom);

где, ТекущийКонтрагент — имеет тип обычной переменной, а 

КонтрагентCom — Com-объект.


Кит третий

 

Все конструкторы в базе-источнике создаются через метод NewObject.

Пример 1:

КонтрагентГоловной = БазаИсточник.Справочники.Контрагенты.СоздатьЭлемент();
КонтрагентГоловной.УстановитьСсылкуНового(БазаИсточник.Справочники.Контрагенты.ПолучитьСсылку(БазаИсточник.NewObject(«УникальныйИдентификатор», ТекущийUID)));

Пример 2: 

СтрокаUID = БазаИсточник.XMLСтрока(СсылкаНаКонтрагента);
Запрос = БазаИсточник.NewObject(«Запрос»);
Запрос.УстановитьПараметр(«UID», БазаИсточник.NewObject(«УникальныйИдентификатор», СтрокаUID));
Запрос.Текст = «……..»;

Все глобальные методы в базе-источнике вызываются через Сom – соединение

Пример: UID = БазаИсточник.XMLСтрока(СсылкаНаКонтрагента);

Пример 2:БазаИсточник.ЗначениеЗаполнено(Контрагент)

Пример 3: БазаИсточник.ЗаполнитьЗначениеСвойств(Приемник, Источник);

Пример 4 (получение имени значения перечисления Com-соединения): ИмяПеречисления = БазаИсточник.XMLСтрока(БазаИсточник.Перечисления.СтавкиНДС.НДС10);

 

Теперь, вы знаете три простых правила работы с Com- объектами. Получение данных удаленной базы в режиме Он-Лайн – очень востребованная и одновременно простая задача. Желаю успехов в работе.

 

has been added to your cart:
Оформление заказа