gifts2017

M-IT: Готовый внешний веб-сервис для взаимодействия 1С и PHP

Опубликовал Anna Filicheva (meteorit) в раздел Обмен - Обмен с другими системами

1cgw - программная сборка (внешний веб-сервис, WSDL-ссылка), реализованная средствами PHP для прямого обращения, передачи и получения данных между конфигурациями "1С: Предприятие 8" и  информационными системами на базе PHP.

В описании будет рассмотрен пример обращения из "1С: Предприятие 8" к базе данных CMS  Open Cart.

Поддержку SOAP обеспечивает SOAP-расширение для PHP.

Наш SOAP-сервис (веб-сервис) написан с использованием программного каркаса на PHP Zend Framework. А именно, используется компонент Zend_Soap фреймворка, который создает оболочку вокруг SOAP-расширения для PHP и имеет полный набор инструментов для создания и развертывания SOAP-сервисов.

Zend_Soap расположен в папке Zend, ядро веб-сервиса (сервер SOAP) - в папке OneC.

Для определения возможностей SOAP-клиентов при работе с веб-сервисом создается набор сервис-объектов с методами и публикуется на сервере SOAP.

Это API сервиса в файле формата WSDL (Web Service Description Language, язык описания веб-сервисов и доступа к ним).

Клиенты SOAP могут получать из этих файлов информацию об именах методов, типах входных и выходных данных и возвращаемых значениях.

SOAP-сервер осуществляет перевод типов данных SOAP в стандартные типы данных, анализирует пакеты запросов SOAP, реализует соответствующий метод сервиса, а также генерирует пакеты ответов SOAP с результатами.

1cgw - это публикация SOAP-протокола плюс файл INDEX.PHP, в котором описаны процедуры информационной базы PHP c параметрами, к которым происходит обращение из 1С. 

Если процедура описана в файле INDEX.PHP, входящего в сборку 1cgw, то из 1С, после подключения внешнего веб-серсиса через инструмент WSПрокси, возможно обращение к этой процедуре/объекту.

Состав и содержимое INDEX.PHP редактируется с учетом БД. 

Рассмотрим пример: функцию поиска товара по ID.

----------------------------------------------------------------------------------------------------

В INDEX.PHP она описана следующим образом:


private function _getProduct($product_id) {

return $this->model_catalog_product->getProduct($product_id);

}

----------------------------------------------------------------------------------------------------

//В 1С создаем объект WSПрокси: 

Функция ПолучитьWSПрокси(Витрина, ИмяФайла) Экспорт

    Попытка

        Определение = Новый WSОпределения(Витрина.АдресВитрины + "/" + ИмяФайла);

        Прокси = Новый WSПрокси(Определение, Витрина.АдресВитрины + "/" + ИмяФайла, "OneCGatewayService",                     "OneCGatewayPort");

        Возврат Прокси;

    Исключение

        Возврат Неопределено;

    КонецПопытки;

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

 

----------------------------------------------------------------------------------------------------

//Пример вызова функции поиска номенклатуры в 1С по ID OpenCart:

//В качестве адреса витрины может быть прописан путь: http://localhost.ru/1cgw (в примере "Витрина" используется как

//параметр)

Функция НайтиНоменклатуруПоИД(ОпенКартИД)

    ВебСервис = ПолучитьWSПрокси(http://localhost.ru/1cgw, "index.php");

    Если ОпенКартИД = 0 ТогдаВозврат Ложь; КонецЕсли;

    ТипЦелое = ВебСервис.ФабрикаXDTO.тип("http://www.w3.org/2001/XMLSchema", "int");

    product_id = ВебСервис.ФабрикаXDTO.создать(ТипЦелое, ОпенКартИД);

    Попытка

        retStr = ВебСервис.getProduct(product_id);

        Продукт = retStr.item;

        Возврат Истина;

    Исключение

        Возврат Ложь;

    КонецПопытки;

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

 


Примечание1сgw используется при реализации обмена в режиме реального времени для решений: 

M-IT: Управление интернет-магазином  из 1С 

Реализован обмен с CMS Open Cart, Prestashop и Simpla на базе PHP

В 1сgw меняется только содержание файла INDEX.PHP, в зависимости от состава процедур и параметров информационной системы на базе PHP.

Скачать файлы

Наименование Файл Версия Размер
M-IT: Готовый внешний веб сервис. Исходный файл и пример обработки взаимодействия из 1С 20
.zip 427,45Kb
01.06.15
20
.zip 427,45Kb Скачать
Инструкция по установке. Требования 10
.doc 32,50Kb
01.06.15
10
.doc 32,50Kb Скачать

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Алексей Андреев (Saldor) (0.04 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Антонио (Fragster) 25.09.14 16:42
Писал подобное для многопоточного теста, правда без ZENDа, он зато с автогенерацией wsdl по списку функции через Reflection
2. Anna Filicheva (meteorit) 01.10.14 15:11
(1) Fragster, у вас на каждую операцию, получается, был свой wsdl? Использовали только для своей задачи с многопоточным тестом? Не думали, как решение свое использовать для других задач? Спасибо за идею
3. Антонио (Fragster) 05.10.14 22:23
(2) meteorit, нет, количество операций произвольное, сколько функций в передашь, столько и будет.
см, например, http://fragster.ru/tmp/test.php?wsdl или сам http://fragster.ru/perfomanceTest/ws.php?wsdl
ну а не использовал более нигде, потому что не надо было, да и не полностью покрываются все возможные варианты
4. Дмитрий Воробьев (fieryfist) 21.08.15 17:51
Скопируйте содержимое папки upload/ (каталоги 1cgw/, admin/ и vqmod/) в корень Вашего магазина


этих папок нету в вашем архиве, откуда копировать?
5. Алексей Андреев (Saldor) 26.07.16 20:57
(4) fieryfist, Они, я так понимаю лежат в выше указанной конфигурации Управления магазином.
6. Антонио (Fragster) 27.07.16 10:50
(2) meteorit, тем временем выложил в открытый доступ с примерами http://fragster.ru/wsfor1c/
7. Алексей Андреев (Saldor) 31.07.16 05:53
(4) fieryfist, Вот, файлы не достающие для сайта. Сам сейчас публикацию веб сервисов интегрирую.
Прикрепленные файлы:
uim_1c_OC_1.5.x-master.zip
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа