Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Подключение к 1C 8.3 и 8.2 и работа по COM соединению

Подключение к другой базе 1С 8 по COM-соединению очень полезная вещь. В основном, эта функция необходимо для обмена данными между конфигурациями.

Но по каким то причинам у новичком часто возникает затруднения с этим не сложным процессом. Ниже я расскажу пример решения этой проблемы на примере простой задачки.

Обмен 1С 8.3 по COM

Поставлена задача:

Из конфигурации «Документооборот«, необходимо подключится к базе УПП:

  • найти документ по заранее известном коду, допустим «123»
  • получить статус документа
  • если статус изменился — то поменять и в соответствующем документе «документооборота

Реализация задачи:

Создание подключения к базе 1C по COM

Первым делом необходимо создать подключение к базе 1С 8.3, рассмотрим функцию, которая вернет подключение по ком-объекту к другой базе для файлового режима 1С:

Функция ПолучитьПодключениеКФайловойБД()

Параметры = "File=""C:\1CBase""";Usr=""login"";Pwd=""password"";";
V82COMConnector= Новый COMОбъект("V82.COMConnector");
Попытка
Возврат V82COMConnector.Connect(Параметры);
Исключение
Предупреждение ("Ошибка подключения!");
Возврат Неопределено;
КонецПопытки;

КонецФункции;

Получите 267 видеоуроков по 1С бесплатно:

Функция вернет СОМ объект, с помощью которого можно производить действия с другой базой данных 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С:

Видеоурок по подключению 1С 8.3  через COM:

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 12 на “Подключение к 1C 8.3 и 8.2 и работа по COM соединению
  1. «Функция вернет COM объект» — почему-то я не вижу оператор «Возврат» )

    Ответить

    • Спасибо! Поправили 🙂

      Ответить

  2. Что произойдет, если из базы №1, но на разных клиентах, к базе №2 будут создаваться несколько внешних соединений одновременно или сразу друг за другом, с одними и теми же параметрами подключения (когда логин и пароль базы №2 совпадают)?
    Произойдет ли коллизия? Как поведут себя второе и последующие внешние соединения, когда предыдущее еще выполняет обработку?

    Ответить

    • Коллизий с ком-соединениями быть не должно.

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

      Ответить

      • Спасибо за ответ!
        А как будут выданы лицензии на платформу и на типовое отраслевое решение Рарус (ТОР)? Одна на несколько активных внешних соединений, или для каждого внешнего соединения отдельно?

        Ответить

    • На счет раруса сказать не могу, скорее всего на каждое соединение будет кушать по лицензии.

      В обычных платформенных лицензиях, если ничего не поменялось, занимает по лицензии за каждое подключение.

      Ответить

  3. Есть обработка, устанавливающая com соединение к файловой базе.
    Из файловой базы она работает. А из той же базы в клиент-серверном варианте нет.
    В чем может быть причина? Платформа 8.3.6.2076
    Спасибо.

    Ответить

  4. Вопрос, требуется ли подключение в монопольном режиме для COM Объектов?
    И что делать с ошибкой: Ошибка разделения доступа к базе данных ?

    Ответить

    • Нет, монопольный доступ не требуется.

      В момент подключения вываливается ошибка?

      Ответить

  5. Добрый день!
    А если мне заранее не известен документ, как мне получить его тип?

    Ответить

    • Олеся, здравствуйте!

      Ну без типа документа наверное и не ясно что забирать вообще. Объясните поподробнее не до конца понял вас.

      Ответить

  6. Добрый день.
    Такой вопрос.
    Подключаемся по COM из базы 1 в базу 2. И нужно по GUID в базе 2 найти документ, например Платежное поручение.
    Такое возможно без перебора всех платежных поручений?

    Ответить

Добавить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*