Заказать проект
Оставьте заявку для получения коммерческого предложения.
Заполните форму и мы вышлем Вам предложение в котором решим,
чем можем вам помочь.
Обмен с "1С" в реальном времени: протокол SOAP

Обмен с "1С" в реальном времени: протокол SOAP

7 Февраля 2019
Артём Ошовский
Backend Developer
Артём Ошовский
следующая статья

О популярности и всевозможном применении программы “1С: Предприятие” можно писать долго... А можно просто привести статистику, что данный программный продукт используется в более чем 90% предприятий стран бывшего СНГ… И конечно в 2019 году у большинства предприятий-пользователей “Одинэской” есть свои сайты, а это первый признак, что руководству компании понадобится интеграция с “1С”. Этот способ обмена данными основан на файловом механизме, который является базисом всех современных операционных систем. Главным достоинством обмена файлами является то, что система-источник ничего не должна знать о системах-потребителях. Мы просто формируем файл с данными и выкладываем его в хранилище (например, файловый каталог), где остальные участники интеграционного процесса могут получить из него информацию. Но этот способ имеет множество недостатков, и я, как разработчик, сказал  бы фатальных:

  • Актуальность информации;

  • Скорость обновления;

  • Достаточно сложно централизованно проследить маршруты и историю прохождения данных.

Если у Вас сайт на “Битриксе”

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

По сути, веб-сервисы — это реализация абсолютно четких интерфейсов обмена данными между различными приложениями, которые написаны не только на разных языках, но и распределены на разных узлах сети. Именно с появлением веб-сервисов развилась идея SOA — сервис-ориентированной архитектуры веб-приложений (Service Oriented Architecture). Достоинством web-сервисов, которые могу выделить это:

  1. Возможность организовать онлайн-обмен;

  2. Возможность организовать удаленный онлайн-обмен, т.е. через Интернет;

  3. База-приемник и база-источник могут работать на разных релизах и даже версиях платформы;

  4. Очень быстрая установка соединения и очень быстрая передача данных;

  5. Удобность для разработчика.

На сегодняшний день наибольшее распространение получили следующие протоколы реализации веб-сервисов:

  • SOAP (Simple Object Access Protocol) — по сути это тройка стандартов SOAP/WSDL/UDDI;

  • REST (Representational State Transfer);

  • XML-RPC (XML Remote Procedure Call).

На самом деле, SOAP произошел от XML-RPC и является следующей ступенью его развития. В то время как REST — это концепция, в основе которой лежит скорее архитектурный стиль, нежели новая технология, основанный на теории манипуляции объектами CRUD (Create Read Update Delete) в контексте концепций WWW. Для реализации веб-сервиса на базе SOAP протокола, есть встроенным пакет в PHP для работы с SOAP.

Как это работает на практике

Не так давно к нам обратился заказчик с запросом на разработку портала сервисного требования бытовой техники с интеграцией “1С”. Особым условием была возможность для клиентов добавлять сервисные требование (которое должно сразу попасть в “1С”), запрашивать все свои сервисные требования с их характеристиками и описаниям, сервисные документы, товары, при этом, основной БД должна быть “1С”. Дополнительно, должна быть возможность фильтрации записей по различным параметрам, например: гарантия, не гарантия, название, дата, серийный номер и т. д.

Конечно же мы решили организовать обмен по SOAP-протоколу. Программисты “1С” настроили Web-сервис со своей стороны; нам же, нужно было реализовать подключение к сервису, как клиент,  с помощью php-класса SoapClient (используя  WSDL-документ).

Для работы с помощью WSDL-документа не нужно указывать URI-сервера, пространство имен, заголовок SOAPAction, способ кодирования и типы параметров. Вся эта информация берется из WSDL файла. Так проще, но могут возникнуть проблема. Единственный аргумент против его использования состоит в том, что клиент должен прочитать WSDL с сервера до того, как можно будет вызвать какую-нибудь процедуру, а в веб это может занять довольно много времени. Для того, чтобы ускорить работу в SOAP-расширении предусмотрены следующие параметры конфигурации: soap.wsdl_cache_enabled, soap.wsdl_cache_dir и soap.wsdl_cache_ttl. Их можно задать в файле php.ini или с помощью ini_set(). Пример кода подключения SOAP клиента в файле init.php:

Дальше все просто: программист “1С” создал методы, которые мы использовали для получения и вывода, в реальном времени, нужной информации на портале из “1С”, или же для отправки данных в “1С”.

Пример работы обмена на портале: на скриншоте ниже видно форму, где пользователь вводит данные, а именно — промежуток времени и название товара, и с помощью кнопки «Знайти» запрашивает результат.

На сервере благодаря методу get_search_nomenclature_for_name($param), созданным программистом “1С”, получаем все документы товаров в реальном времени из базы “1С”. Код вызова функции и получения всех данных в реальном времени:

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

Затем, выбрав нужный нам товар, добавляем дополнительные параметры для описания неисправности товара для сервисного требования и опять с помощью ajax-запроса отправляем параметры на сервер, где, используя метод get_created_doc($param), создаем в 1С сервисное требование.
Создание сервисного требования на сайте:

Код вызова метода get_created_doc($param) для создания сервисного требования в БД “1С”:

Итог

В этой статье я коротко описал только основные моменты SOAP-расширения. Главное то, что оно решает вопрос обмена в реальном времени и Вы уже можете пробовать это на собственном сайте. Но это далеко не предел расширения! Оно может гораздо больше, но продемонстрировать все его возможности в рамках одной короткой статьи попросту не получится. Наша компания с радостью рассмотрит Ваши вопросы по данному методу и предложит эффективное решение.

Need help?

Ask a question.

Chat Now
Записаться На Консультацию
Записаться На Консультацию
Мы свяжемся
с вами
в течении
10 минут
laptop
Мы свяжемся с вами в течении 10 минут