Как реализовать обмен номенклатурой между базами 1С через веб-сервисы?

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

Организация обмена данными между двумя информационными базами 1С — задача, с которой рано или поздно сталкивается каждый разработчик. Сегодня мы разберем, как правильно организовать передачу номенклатуры, используя веб-сервисы и другие интеграционные механизмы платформы.

Реализация через WS-сервисы (SOAP)

Традиционным способом взаимодействия является использование WS-сервисов. Этот метод основан на протоколе SOAP и требует предварительного описания структуры данных через WSDL-файл. Рассмотрим, как программно подключиться к сервису и выполнить запрос данных.

Для начала создадим функцию подключения, которая инициализирует WSПрокси. Обратите внимание, что мы используем WSОпределения для инициализации соединения с удаленным сервисом.


Функция ПодключитьсяКСервисуФормированияПродаж() Экспорт
    СтруктураСервиса = Новый Структура(\"ОК, Ошибки\", истина, ложь);
    
    // Получаем параметры из констант
    Логин = Константы._СервисФормированияПродаж_Логин.Получить();
    Пароль = Константы._СервисФормированияПродаж_Пароль.Получить();
    Адрес = Константы._СервисФормированияПродаж_Адрес.Получить();
    
    Попытка
        Определение = Новый WSОпределения(Адрес, Логин, Пароль);
        ПространствоИмен = \"http://www.geniy1s.ru/CliEx\";
        
        Сервис = Новый WSПрокси(Определение, ПространствоИмен, \"_ФормированиеПродаж\", \"_ФормированиеПродажSoap\");
        
        Сервис.Пользователь = Логин;
        Сервис.Пароль = Пароль;
        СтруктураСервиса.Вставить(\"Сервис\", Сервис);
    Исключение
        СтруктураСервиса.ОК = ложь;
        СтруктураСервиса.Ошибки = ОписаниеОшибки();
    КонецПопытки;
    
    Возврат СтруктураСервиса;    
КонецФункции

После успешного подключения мы можем вызвать метод сервиса для получения номенклатуры. В приведенном ниже примере используется сериализация структуры для передачи параметров поиска.


Функция ПолучитьТовар(СтруктураПоиска) Экспорт
    УстановитьПривилегированныйРежим(Истина);
    
    Результат = Новый Структура();
    СтруктураСервиса = ПодключитьсяКСервисуФормированияПродаж();
    
    Если СтруктураСервиса.ОК = ложь Тогда
        // Обработка ошибки подключения
        Возврат Результат;
    КонецЕсли;
    
    // Вызов метода веб-сервиса
    РезультатВнутр = СтруктураСервиса.Сервис.GetGoods(ЗначениеВСтрокуВнутр(СтруктураПоиска));
    Результат = ЗначениеИзСтрокиВнутр(РезультатВнутр);
    Возврат Результат;
КонецФункции

Современные альтернативы: HTTP-сервисы и OData

Хотя WS-сервисы работают стабильно, в современной разработке на 1С всё чаще используются более легкие и гибкие инструменты.

  1. HTTP-сервисы: Это стандарт для REST API. Они работают с форматом JSON, что делает обмен данными более быстрым и понятным для сторонних систем. Вместо громоздких WSDL-файлов здесь используется прямая работа с HTTP-запросами.
  2. OData (интеграционный интерфейс): Это один из самых быстрых способов связать две базы 1С. Вам не нужно писать код сервиса на принимающей стороне. Достаточно опубликовать базу на веб-сервере и включить поддержку OData в настройках. После этого внешняя база получает доступ к объектам (справочникам, документам) через стандартные URL.

Важные рекомендации по безопасности и надежности

При организации обмена данными следует придерживаться нескольких правил, чтобы избежать «глюков» и проблем с безопасностью:

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

← На главную