Подключение внешних программ к 1С:Предприятие 8.3

· 9 мин

Содержание

«Добавить программу в 1С» обычно означает одно из двух: подключить к базе внешнюю обработку (расширение) прямо внутри 1С либо наладить обмен данными с отдельным приложением — сайтом, складской системой, оборудованием. Способ зависит от того, что именно должна делать внешняя программа и где она работает.

Для типовых конфигураций на платформе 8.3 есть пять рабочих механизмов интеграции: внешние обработки и расширения, HTTP-сервисы, COM-соединение, файловый обмен и внешние компоненты. Ниже — как подключить программу каждым из них, в каких случаях какой выбрать и что настроить, чтобы связь заработала с первого раза.

С чего начать: какой способ подключения выбрать

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

Сравнение способов по задачам:

СпособКогда подходитЧто потребуется
Внешняя обработка / расширениеДобавить в базу печатную форму, отчёт, кнопку, свою логикуФайл .epf или .cfe, права администратора
HTTP-сервисОбмен с сайтом или веб-приложением «по запросу»Веб-сервер, публикация базы
COM-соединениеПрограммно управлять другой базой 1С на том же сервере WindowsЗарегистрированный comcntr.dll
Файловый обмен / синхронизацияРегулярная выгрузка-загрузка между системамиПравила обмена или формат EnterpriseData
Внешняя компонентаОборудование: сканер, весы, ККТ, криптопровайдерФайл компоненты под вашу ОС и разрядность

Правило простое: если программа должна жить внутри 1С — это обработка или расширение. Если это самостоятельное приложение, с которым нужно обмениваться данными — HTTP, COM или файлы.

Что должна делать внешняя программа?

Подключение внешних обработок и расширений

Это самый частый смысл запроса «добавить программу в 1С»: вам прислали файл .epf (внешняя обработка) или .cfe (расширение), и его надо встроить в базу. Менять типовую конфигурацию при этом не нужно.

Внешняя обработка (.epf) в типовой конфигурации на БСП:

  1. Откройте Администрирование → Печатные формы, отчёты и обработки.
  2. Включите флажок Дополнительные отчёты и обработки.
  3. В том же разделе откройте список Дополнительные отчёты и обработки → Создать → выберите файл с диска.
  4. В карточке задайте размещение — в каких разделах и документах обработка будет доступна — и права на запуск.

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

Расширение конфигурации (.cfe):

Расширения появились в платформе 8.3.6 и позволяют дополнять типовую логику, не снимая её с поддержки. Загрузить готовый файл можно прямо в режиме «1С:Предприятие»:

  1. Откройте Администрирование → Печатные формы, отчёты и обработки → Расширения.
  2. Нажмите Добавить из файла и укажите .cfe.
  3. Перезапустите сеанс, чтобы расширение подключилось.

Если расширение разрабатывается вами, подключать его удобнее через Конфигуратор: Конфигурация → Расширения конфигурации. Загрузка файла расширения и команда «Обновить конфигурацию базы данных» — это два разных шага: пока конфигурацию БД не обновили, изменения в структуру не попадут.

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

Обмен с внешним приложением через HTTP-сервисы

Когда внешняя программа — это сайт, мобильное приложение или другой сервис, их связывают по HTTP. Здесь две роли, и важно не путать их.

1С как сервер (HTTP-сервис). Вы создаёте в конфигурации объект «HTTP-сервис» с обработчиками методов GET, POST и публикуете базу на веб-сервере (Apache или IIS). Публикация делается из Конфигуратора: Администрирование → Публикация на веб-сервере. После публикации внешняя программа обращается к вашему сервису по адресу вида http://сервер/имя_публикации/hs/имя_сервиса/метод.

1С как клиент (HTTP-запрос). Если наоборот — это 1С должна дёргать чужой REST API, пишется код на встроенном языке:

Соединение = Новый HTTPСоединение("api.example.ru", 443, , , , ,
    Новый ЗащищённоеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders");
Ответ = Соединение.Получить(Запрос);
ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();

Разбирать ответ в формате JSON удобно через объекты ЧтениеJSON и ПрочитатьJSON. Для отправки данных используйте метод ОтправитьДляОбработки вместо Получить.

Авторизацию у внешнего API чаще всего передают в заголовках запроса — токен или логин-пароль. Заголовки задаются при создании HTTPЗапрос через свойство Заголовки; конкретный формат (Bearer-токен, Basic-авторизация, ключ в заголовке) смотрите в документации того сервиса, с которым соединяетесь.

Если сервис отвечает ошибкой 404, почти всегда причина — несовпадение имени публикации в адресе. Проверьте, под каким именем база опубликована на веб-сервере, и переопубликуйте при необходимости.

HTTP подходит, когда обмен нужен «по событию» или в реальном времени: оформили заказ на сайте — он сразу ушёл в 1С.

COM-соединение и управление другой базой 1С

COM-соединение нужно, когда одна программа должна программно открыть базу 1С и работать с её данными: прочитать справочник, создать документ, запустить отчёт. Это механизм для Windows — на одном сервере или в одной сети.

Ключевой компонент — внешнее соединение V83.COMConnector. Чтобы им пользоваться, библиотеку сначала регистрируют в системе:

regsvr32 "C:\Program Files\1cv8\<номер_версии>\bin\comcntr.dll"

Путь зависит от версии платформы — подставьте свою. Разрядность comcntr.dll должна совпадать с разрядностью вызывающей программы: 32-битное приложение не подключит 64-битную библиотеку, и наоборот.

Пример подключения к файловой базе из встроенного языка или внешнего скрипта:

Коннектор = Новый COMObject("V83.COMConnector");
Соединение = Коннектор.Connect("File=""C:\Bases\Buh"";Usr=""Администратор"";Pwd="""";");

Для серверной базы строка соединения другая: "Srvr=""server"";Ref=""base"";Usr=""..."";Pwd=""..."";".

Обратная задача — когда это 1С управляет внешней программой — решается так же через Новый COMObject, только с ProgID нужного приложения (например, пакет офисных программ для формирования файлов). Здесь объект создаётся на той машине, где выполняется код 1С, и COM-сервер приложения должен быть установлен.

COM удобен для разовых интеграций между базами 1С, но он привязан к Windows и к сети. Для связи с не-1С системами современнее использовать HTTP.

Отдельный случай — внешние компоненты. Это бинарные библиотеки по технологии Native API, через которые 1С работает с оборудованием и внешними библиотеками: сканерами штрихкодов, электронными весами, фискальными регистраторами, криптопровайдерами. Компоненту помещают в макет конфигурации или в расширение и подключают из кода:

ПодключитьВнешнююКомпоненту("ОбщийМакет.ИмяКомпоненты",
    "МояКомпонента", ТипВнешнейКомпоненты.Native);
Объект = Новый("AddIn.МояКомпонента.Класс");

Главное требование то же, что у COM: сборка компоненты должна соответствовать вашей операционной системе и разрядности платформы. 64-битный сервер 1С не подключит компоненту, собранную только под 32 бита. Поэтому у качественных компонентов в поставке лежат версии под все поддерживаемые платформы.

Файловый обмен и синхронизация данных

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

Для обмена между конфигурациями 1С используют встроенную синхронизацию. Включается она в разделе Администрирование → Синхронизация данных (сначала поставьте флажок Синхронизация данных), дальше — Настройки синхронизации данных → создание настройки по нужному сценарию.

Универсальный формат обмена между разными конфигурациями — EnterpriseData. Если стандартных правил не хватает, свои правила конвертации разрабатывают в отдельной конфигурации «Конвертация данных 3.0» и загружают в базу.

Для обмена с не-1С системой чаще используют собственный формат — XML, JSON или CSV. Здесь понадобится сопоставить поля внешней системы с реквизитами 1С:

Сопоставление полей
Артикул товара→Справочник «Номенклатура», реквизит «Артикул»
Название→Наименование
Цена→Регистр сведений «Цены номенклатуры»
Внешний код контрагента→Справочник «Контрагенты», реквизит кода или доп. реквизит

Для разового переноса данных между идентичными базами проще всего выгрузка-загрузка через XML средствами Конфигуратора, без настройки полноценной синхронизации.

Файловый обмен терпим к перебоям связи: если файл не ушёл сейчас, он уйдёт при следующем сеансе. Поэтому для ночных и пакетных обменов он надёжнее, чем прямое соединение.

Автоматизация: запуск обмена по расписанию

Подключить программу — половина дела. Чаще нужно, чтобы обмен шёл сам, без участия человека. За это отвечают регламентные задания.

Список заданий открывается через Администрирование → Обслуживание → Регламентные и фоновые задания. Здесь видно, какие задания есть, включены ли они и когда отрабатывали в последний раз. Для каждого задания задаётся расписание — периодичность, время, дни недели.

Важная разница между режимами работы базы:

  • Клиент-серверная база . Регламентные задания выполняет кластер серверов автоматически, пользователи для этого не нужны.
  • Файловая база. Задания отрабатывают только пока открыт сеанс, в котором включён планировщик. На практике для этого держат отдельный сеанс-клиент, который постоянно запущен.

Прежде чем ставить обмен на частое расписание, оцените нагрузку: тяжёлый обмен каждые пять минут может мешать работе пользователей. Для больших выгрузок выбирайте ночные часы.

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

Если интеграция не заработала: диагностика

Большинство проблем с подключением внешних программ сводится к нескольким типовым причинам — права, разрядность, публикация, расписание. Начинайте с них, прежде чем искать что-то сложное.

Для разбора ошибок встроенного кода используйте отладку в Конфигураторе, а для серверных и фоновых процессов — журнал регистрации (Администрирование → Поддержка и обслуживание → Журнал регистрации) и технологический журнал платформы. HTTP-обмен удобно смотреть логами веб-сервера и внешними инструментами проверки запросов.

Диагностика: выберите симптом

При интеграциях с внешним приложением проверяйте связь с обеих сторон: часто «1С не принимает данные» на деле означает, что внешняя программа отправляет их не в том формате или не на тот адрес.

Частые вопросы

Чем внешняя обработка отличается от расширения?
Обработка .epf — это отдельный инструмент (форма, отчёт, печатная форма), который запускается по требованию. Расширение .cfe дополняет саму конфигурацию: может менять формы, добавлять реквизиты и логику, при этом типовая остаётся на поддержке.
Нужно ли менять конфигурацию, чтобы подключить программу?
Нет. Внешние обработки, расширения и файловый обмен работают без снятия типовой с поддержки. Правка конфигурации нужна только для собственных HTTP-сервисов и глубокой доработки.
Будут ли интеграции работать после обновления 1С?
Внешние обработки и настройки обмена переносятся вместе с базой. Расширения и собственный код стоит проверять после крупных обновлений платформы и конфигурации — иногда их нужно адаптировать.
Можно ли подключить программу в базовой версии 1С?
Внешние обработки и файловый обмен обычно доступны. Возможности расширений и серверной интеграции в базовых версиях ограничены — ориентируйтесь на документацию к своей поставке, а при серьёзной интеграции рассматривайте ПРОФ-версию.
Что безопаснее для связи с не-1С системой — COM или HTTP?
Для современных интеграций с внешними приложениями предпочтителен HTTP: он не привязан к Windows, переживает разрыв сети и легко масштабируется. COM оставляют для связи между базами 1С в пределах одной сети.