Подключение к другой базе 1С 8 по COM-соединению — очень полезная вещь. В основном, эта функция необходима для обмена данными между конфигурациями.
Но по каким-то причинам у новичков часто возникают затруднения с этим несложным процессом. Ниже я подскажу способ решения этой проблемы на примере простой задачки.
Поставлена задача:
Из конфигурации «Документооборот» необходимо подключится к базе УПП:
- найти документ по заранее известному коду, допустим «123»;
- получить статус документа;
- если статус изменился, то поменять и в соответствующем документе «документооборота».
Реализация задачи:
Создание подключения к базе 1C по COM
Первым делом необходимо создать подключение к базе 1С 8.3, рассмотрим функцию, которая вернет подключение по ком-объекту к другой базе для файлового режима 1С:
Функция вернет СОМ-объект, с помощью которого можно производить действия с другой базой данных 1С 8.2.
Для клиент-серверного режима строка подключения будет немного отличаться:
Получите 267 видеоуроков по 1С бесплатно:
Если Вы подключаетесь к базе на платформе 1C 8.1, то Вам необходимо использовать не «V82.COMConnector», а «V81.COMConnector».
Найти документ 1С по COM
Для примера, пусть номер нужного документа будет «1234», а наш Документ-объект — «ДокументОбъект»:
Вот и все: мы подключились по COM, получили нужный документ, прочитали его статус и, если он отличается, установили статус нашему документу.
Другие статьи по 1С:
Видеоурок по подключению 1С 8.3 через COM:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Иногда удобно подключиться через COM из одной базы 1С к другой и иметь доступ одновременно к обоим базам. Такой подход можно использовать для обмена данными.
Подключение к базе
Для подключения к базе 1С через COM необходимо:
- Создать COM-объект 1С необходимой версии ([ V8 ; V81 ; V82 ; V83 ].COMConnector);
- Подключиться к базе при помощи метода Connect () , указав параметры доступа.
Ниже представлены примеры подключения к серверной и файловой базам:
Примеры обращения к данным другой базы
Методы БСП
В библиотеке стандартных подсистем(БСП) предусмотрены методы для работы с COM-подключениями. Вот некоторые из них:
- ОбщегоНазначенияКлиентСервер . ИмяCOMСоединителя () — возвращает имя COM-класса для работы с 1С:Предприятием через COM-соединение (например, «v83.COMConnector»).
- ОбщегоНазначения . ИдентификаторCOMСоединителя (Знач ИмяCOMСоединителя ) — возвращает CLS >ОбщегоНазначенияКлиентСервер . УстановитьВнешнееСоединениеСБазой ( Параметры ) — устанавливает внешнее соединение с информационной базой по переданным параметрам подключения и возвращает указатель на это соединение.
- СоединенияИБ . ИнформацияОСоединениях ( ПолучатьСтрокуСоединения = Ложь, СообщенияДляЖурналаРегистрации = Неопределено, ПортКластера = 0 ) — возвращает структуру, из которой можно узнать, есть ли в текущий момент COM-соединения с базой.
COMСоединитель = Новый COMОбъект ( ОбщегоНазначенияКлиентСервер . ИмяCOMСоединителя ());
CLS >= ОбщегоНазначения . ИдентификаторCOMСоединителя ( ОбщегоНазначенияКлиентСервер . ИмяCOMСоединителя ());
Результат = ОбщегоНазначенияКлиентСервер . УстановитьВнешнееСоединениеСБазой ( Параметры );
ТекущиеСоединения = СоединенияИБ . ИнформацияОСоединениях (Истина);
Лицензирование
Для каждого COM-соединения расходуется одна лицензия. Лицензии ищутся в следующем порядке:
- локальные клиентские лицензии;
- локальные серверные лицензии;
- сетевые клиентские лицензии;
- клиентские лицензии на сервере 1С:Предприятия или веб-сервере.
Остались вопросы?
Спросите в комментариях к статье.
COM соединение служит для установки соединения с другими базами 1С. В этой статье узнаем основы работы с этим классом, как выполнять запросы через COM соединение и разберем несколько примеров.
Оглавление
Для чего нужно COM Соединение?
Этот объект используется для установки соединения с другими базами 1С. Например, Вам нужно сделать выгрузку справочника «Контрагенты» из одной базы, в другую или получить какие либо данные из другой базы 1С. Вы сможете это реализовать при помощи COM Соединения.
Как создать COM объект?
В начале надо узнать, какая версия 1С у вас, из этого и будем исходить при создании COM объекта.
- Для 1С 8.2: COMConnector= Новый COMОбъект(«V82.COMConnector»);
- Для 1С 8.3: COMConnector= Новый COMОбъект(«V83.COMConnector»);
Функция ПолучитьПодключение(СтрокаПодключения)
Попытка
//Создаем COM Объект
V83COMConnector= Новый COMОбъект("V83.COMConnector");
//Выполняем подключение к информационной базе
База = V83COMConnector.Connect(СтрокаПодключения);
Возврат База;
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
КонецФункции
Переменная «СтрокаПодключения» может быть двух видов:
- Вид для файловой базы:
СтрокаПодключения = "File = ""C:База_1С"" ; Usr=""ИмяПользователя""; Pwd=""Пароль"";";
СтрокаПодключения = "Srvr=""ИмяСервера""; Ref=""ИмяБазы""; Usr=""ИмяПользователя""; Pwd=""Пароль"";";
В результате выполнения этой функции мы получим COM Объект через который можно обращаться к подключаемой базе.
Примеры работы с COM объектом
Для примера рассмотрим ситуацию, когда нам нужно через COM соединение создать склад:
СтрокаПодключения = "File = ""C:База_1С""; Usr=""ИмяПользователя""; Pwd=""Пароль"";";
COMСоединение = ПолучитьПодключение(СтрокаПодключения);
НовыйОбъект = COMСоединение.Справочники.Склады.СоздатьЭлемент();
НовыйОбъект.Наименование = "Новый склад";
НовыйОбъект.ВидСклада = COMСоединение.Перечисления.ВидыСкладов.Оптовый;
НовыйОбъект.Записать();
Обратите внимание что «ВидСклада» мы указали через переменную «COMСоединение».
Так же часто требуется выполнить запрос через COM соединение, разберем пример на основе тех же складов:
Запрос = COMСоединение.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ
| Склады.Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| НЕ Склады.ПометкаУдаления";
Результат = Запрос.Выполнить().Выгрузить();
В результате запроса получим таблицу значений со всеми складами, у которых нет пометки на удаление.