Как организовать обращение из файловой базы к базе на сервере 1С 8.3

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Метод 1. Использование стандартного интерфейса OData (REST API)

Проанализируем самый быстрый способ «из коробки», который не требует написания сложного программного кода в базе-источнике. Интерфейс OData позволяет обращаться к объектам базы данных (справочникам, документам, регистрам) через стандартные HTTP-запросы.

Для реализации этого метода нам потребуется выполнить следующие шаги в серверной базе:

  1. Опубликовать базу на веб-сервере (Apache или IIS). При публикации необходимо обязательно установить флаг «Публиковать стандартный интерфейс OData».
  2. В коде серверной базы необходимо явно указать, какие объекты будут доступны через этот интерфейс. Это делается с помощью метода УстановитьСоставСтандартногоИнтерфейсаOData().

Рассмотрим пример кода для открытия доступа к справочнику Номенклатура:


МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Метаданные.Справочники.Номенклатура);
УстановитьСоставСтандартногоИнтерфейсаOData(МассивОбъектов);

После этого из файловой базы мы сможем получать данные, отправляя HTTPЗапрос. Данные возвращаются в формате JSON или XML, что очень удобно для последующей обработки. Этот метод наиболее современный и безопасный, так как работает через стандартные порты веб-сервера (80 или 443).

Метод 2. Программное COM-соединение

Разберем классический способ взаимодействия — использование COM-соединения. Этот метод позволяет создать «невидимый» сеанс серверной базы внутри файловой и обращаться к её методам и данным напрямую, как если бы они были локальными объектами.

Для подключения используем объект V83.COMConnector. Важно помнить, что этот метод работает только в среде ОС Windows. Рассмотрим пример функции подключения:


Попытка
    COMСоединитель = Новый COMОбъект("V83.COMConnector");
    ПараметрыСвязи = "Srvr='ServerName';Ref='BaseName';Usr='Login';Pwd='Password';";
    БазаСервер = COMСоединитель.Connect(ПараметрыСвязи);
    Сообщить("Соединение успешно установлено!");
Исключение
    Сообщить("Не удалось подключиться: " + ОписаниеОшибки());
КонецПопытки;

Выделим важные нюансы этого подхода:

Метод 3. Разработка собственных HTTP-сервисов

Если стандартный интерфейс OData кажется слишком избыточным или небезопасным, мы можем разработать собственные HTTP-сервисы в серверной базе. Это позволит нам определить конкретные «точки входа» (URL) и описать логику обработки запросов на языке 1С.

Проанализируем процесс создания такого сервиса:

  1. В конфигураторе серверной базы создаем объект HTTP-сервис.
  2. Определяем Шаблон URL и Метод (GET, POST, PATCH).
  3. Пишем обработчик на языке 1С, который будет принимать HTTPСервисЗапрос и возвращать HTTPСервисОтвет.

Пример простейшего обработчика в серверной базе, который возвращает приветствие:


Функция ПолучитьДанные(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки("Запрос успешно обработан на сервере");
    Возврат Ответ;
КонецФункции

В файловой базе для обращения к этому сервису мы будем использовать объект HTTPСоединение. Этот метод является наиболее гибким, так как позволяет передавать сложные структуры данных и выполнять произвольный код на стороне сервера.

Метод 4. Веб-сервисы (SOAP)

Технология Web-сервисов (протокол SOAP) во многом похожа на HTTP-сервисы, но является более строго типизированной. При импорте веб-сервиса в файловую базу через WS-ссылку, 1С автоматически создает типизированные объекты, что упрощает разработку за счет подсказок в конфигураторе.

Для работы с веб-сервисом в файловой базе мы используем следующий подход:


Определение = Новый WSОпределения("http://server/base/ws/Service?wsdl", "Login", "Password");
Прокси = Новый WSПрокси(Определение, "http://www.uri.com", "ServiceName", "EndpointName");
Результат = Прокси.ВыполнитьОперацию(Параметры);

Этот метод отлично подходит для интеграции, где важна строгая структура передаваемых данных (XDTO-пакеты).

Метод 5. Внешние источники данных

Выясним еще одну интересную возможность — прямое подключение к базе данных (SQL) через механизм Внешних источников данных. Если серверная база 1С работает на MS SQL Server или PostgreSQL, файловая база может «подцепиться» к таблицам SQL напрямую через ODBC-драйвер.

Важный момент: Имена таблиц и полей в SQL-базе не соответствуют именам в конфигураторе (например, справочник может называться _Reference45). Поэтому данный метод требует хорошего знания структуры БД 1С или использования специальных обработок для сопоставления имен.

Рекомендации по безопасности и производительности

Рассмотрим несколько правил, которые помогут сделать интеграцию надежной:

Таким образом, выбор метода зависит от ваших задач. Если нужен быстрый доступ к данным — выбирайте OData. Если требуется сложная логика взаимодействия — HTTP-сервисы. Если вы работаете в закрытой локальной сети на Windows и нужно полное управление объектами — используйте COM-соединение.

← На главную