Как стать автором
Обновить

Интеграция 1С Предприятие 8.2 с php вебсервисом, созданным при помощи классов nuSOAP

Добрый день. В данной статье я расскажу каким образом интегрировать 1С Предприятие 8.2 с php вебсервисом, созданным при помощи классов nuSOAP.

Разберу на конкретном примере который я специально создал для данной статьи. Для простоты восприятия буду вести повествование от первого лица.

Создание вебсервиса

Для начала скачаю последнюю версию nuSOAP по адресу sourceforge.net/projects/nusoap, распакую архив и заберу оттуда папку lib, которую положу в папку /wsdl_service/ на сайте eduportal.infosuite.ru.
Таким образом путь к папке выглядит как eduportal.infosuite.ru/wsdl_service
Далее я создаю вебсервис по адресу eduportal.infosuite.ru/wsdl_service/GetSimpleArray.php
Рабочий код GetSimpleArray.php

<?
// Подключаем и инициализируем NuSOAP
require_once('lib/nusoap.php');
$server = new soap_server();
$server->decode_utf8 = false;
$server->soap_defencoding = 'UTF-8';
$server->configureWSDL('GetSimpleArray','http://eduportal.infosuite.ru/wsdl_service/','','document');

// Определяем выходной массив
$server->wsdl->addComplexType(
'ArrayOfString',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]')),'xsd:string'
);

// Регистрируем предоставляемый метод
$server->register('GetSimpleArray', // название метода
array('arg1' => 'xsd:string','arg2' => 'xsd:string'), // входные параметры
array('return' => 'tns:ArrayOfString'), // выходные параметры
'urn:GetSimpleArray', // пространство имен
'', // soapaction
'', // стиль
'', // использование
'' // описание
);

// Определяем метод как функцию PHP
function GetSimpleArray($arg1,$arg2) {
$array[] = $arg1;
$array[] = $arg2;
return $array;
}

// Используем HTTP-запрос чтобы вызвать сервис
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>


Теперь по адресу eduportal.infosuite.ru/wsdl_service/GetSimpleArray.php?wsdl будет выведена XML разметка документа.

Обращение к сервису из 1с Предприятие 8.2

Скачиваем файл GetSimpleArray.rar по адресу eduportal.infosuite.ru/wsdl_service/GetSimpleArray.rar, распаковываем и полученный файл GetSimpleArray.epf запускаем при помощи 1с Предприятие 8.2 – оно работает!

image

Приведу 1С код:
Процедура Кнопка1Нажатие(Элемент)
ОпределениеТ=Новый WSОпределения("http://eduportal.infosuite.ru/wsdl_service/GetSimpleArray.php?wsdl");
Т=Новый WSПрокси(ОпределениеТ,"http://eduportal.infosuite.ru/wsdl_service/","GetSimpleArray","GetSimpleArrayPort");

ОтветОбщ = Т.GetSimpleArray(Именительный,BV1);
Если Типзнч(ОтветОбщ)= Тип("ОбъектXDTO") Тогда
ТабличноеПоле1.Очистить();
Для каждого ЭЛЕМ из ОтветОбщ.list Цикл
ТабличноеПоле1.Добавить(ЭЛЕМ);
КонецЦикла;
Иначе
Ответ = ОтветОбщ;
КонецЕсли;
КонецПроцедуры


PS – Прошу обратить внимание что nuSOAP не работает вместе с IIS7. Один из вариантов решения проблемы — установка Apache 2.2 на другой порт и последующий вызов сервиса из под Apache.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.