Подключение к другой базе 1С 8 по COM-соединению очень полезная вещь. В основном, эта функция необходимо для обмена данными между конфигурациями.
Но по каким то причинам у новичком часто возникает затруднения с этим не сложным процессом. Ниже я расскажу пример решения этой проблемы на примере простой задачки.
Поставлена задача:
Из конфигурации “Документооборот“, необходимо подключится к базе УПП:
- найти документ по заранее известном коду, допустим “123”
- получить статус документа
- если статус изменился – то поменять и в соответствующем документе “документооборота
Реализация задачи:
Создание подключения к базе 1С по COM
Первым делом необходимо создать подключение к базе 1С 8.3, рассмотрим функцию, которая вернет подключение по ком-объекту к другой базе для файлового режима 1С:
Функция ПолучитьПодключениеКФайловойБД() Параметры = "File=""C:\1CBase""";Usr=""login"";Pwd=""password"";"; V82COMConnector= Новый COMОбъект("V82.COMConnector"); Попытка Возврат V82COMConnector.Connect(Параметры); Исключение Предупреждение ("Ошибка подключения!"); Возврат Неопределено; КонецПопытки; КонецФункции;
Функция вернет СОМ объект, с помощью которого можно производить действия с другой базой данных 1С 8.2.
Для клиент серверного режима, строка подключения будет немного отличаться:
Функция ПолучитьПодключениеКСервернойБД() Параметры = "Srvr=""server"";Ref=""BaseName"";Usr=""login"";Pwd=""password"";"; V82COMConnector= Новый COMОбъект("V82.COMConnector"); Попытка Base1С = V82COMConnector.Connect(Параметры); Исключение Предупреждение ("Ошибка подключения!"); КонецПопытки; КонецФункции;
Если вы подключаетесь к базе на платформе 1C 8.1 – то вам необходимо использовать не “V82.COMConnector”, а “V81.COMConnector”.
Найти документ 1С по COM
Для примера, пусть номер нужного документа будет “1234”, а наш Документ-объект – “ДокументОбъект”:
Соединение = ПолучитьПодключениеКСервернойБД(); СсылкаНаОбъект = Соединение.Документы.РеализацияТоваровУслуг.НайтиПоКоду("1234"); Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда Сообщить("Не найден документ!"); Возврат; КонецЕсли; СтатусДокумента = СсылкаНаОбъект.Статус; Если ДокументОбъект.Статус <> СтатусДокумента Тогда ДокументОбъект.Статус = СтатусДокумента; ДокументОбъект.Записать(); КонецЕсли;
Вот и все: мы подключились по COM, получили нужный документ прочитали его статус и если он отличается – установили статус нашему документу.
Видеоурок по подключению 1С 8.3 через COM: