Закажите бесплатный расчет стоимости вашей задачи по 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(Параметры);
Исключение
Предупреждение ("Ошибка подключения!");
Возврат Неопределено;
КонецПопытки;

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

Функция вернет СОМ-объект, с помощью которого можно производить действия с другой базой данных 1С 8.2.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Для клиент-серверного режима строка подключения будет немного отличаться:

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

Параметры = "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:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

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

Комментариев: 26 на “Подключение к 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 найти документ, например Платежное поручение.
    Такое возможно без перебора всех платежных поручений?

    Ответить

    • Документы.ПлатежноеПоручение.ПолучитьСсылку(ГУИД)

      Ответить

  7. Не удается установить Com-соединение если релизы (сборки) платформы разные. Возможность есть, но админские права нужны для перерегистрации comcntr.dll, не давать же их каждому пользователю 1С.

    Ответить

  8. Скажите пожалуйста как сформировать например ОСВ по счету в другой базе и вернуть результат

    Ответить

  9. попправь также в серверной функции…возврат же

    Ответить

  10. а можно ли создать документ через com соединение?

    Ответить

  11. Соединение.Документы.РеализацияТоваровУслуг.НайтиПоКоду(«1234»);
    //тут не найти по коду, а НайтиПоНомеру(«1234») и желательно указать второй параметр даты из искомого периода

    Ответить

  12. Произошла исключительная ситуация (V83.COMConnector.1): Неправильный путь к файлу ‘1Cv8.cdn’. Схема не зарегистрирована

    Не подскажете как с этим бороться?

    Ответить

  13. Если мы проводим документ в другой базе через COM, а он использует функцию обработки и она не срабатывает. Я знаю если функция общего модуля в 1С8, там галку внешнее соединение ставим и функцию ЭКСПОРТ пишем, а как с обработкой быть?

    Ответить

  14. Почти бесполезная статья, ни запросов, ни структур, одним поиском документов через ком не ограничивается.

    Ответить

    • Это для совсем новичков , общие принципы.

      Ответить

  15. ! Соединение.Документы.РеализацияТоваровУслуг.НайтиПоКоду(«1234»)

    Ответить

  16. в документах нет метода найтиПоКоду, нужно использывать найтиПоНомеру

    Ответить

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

Ваш адрес email не будет опубликован.