Home Статьи Веб-сервис на PHP для 1С
Веб-сервис на PHP для 1С PDF Печать E-mail
Автор: Piter Antares   
08.08.2013 15:40

Веб-сервис на PHP для 1С

Долгое время не получалось создать такой веб-сервис на PHP, который одинаково хорошо подходит для вызова как из PHP так и из 1С. В помощь брались статьи из инфостарта и с форумов программистов PHP, но повторюсь долгое время результата не было. Получалось вызывать из PHP веб-сервисы написанные на 1С. Получалось вызывать из PHP веб-сервисы, написанные на PHP. Но очень муторно было дружить сервис написанный на PHP c 1С.

 

Идея решения нашлась в одном посте на инфостарте, но там акцент делался на косяки в 1С, но оказалось, что автор недоразобрался с параметрами функций-членов классов библиотеки NuSOAP, http://www.php.su/articles/?cat=pear&page=003 - это статья или её клон, с которой работал упомянутый автор. С этой библиотекой оказалась одна проблема, её классы конфликтуют именами со стандартными классами сборки на xampp для windows из-за регистронезависимости.

Не буду томить — пример рабочего кода сторона php:

 


$domain = "http://www.mysomedomain.ru";
configureWSDL( 'exch_ocStore_1C', $domain . '/exchange/' );
// Регистрируем предоставляемый метод
$server->register('test_connection',		        // название метода
  arra('request' => 'xsd:string' ),			// входные параметры
  array('return' => 'xsd:string'),      		// выходные параметры
  $domain . '/exchange/',                 		// пространство имен
  $domain . '/exchange/exch_wsdl.php#test_connection',	// soapaction
  'rpc',                                		// стиль
  'encoded',                            		// использование
  'Test connection before Start of exchange' 		// описание
);
// Определяем метод как функцию PHP
function test_connection( $request ) {
  return $request;
}
// Используем HTTP-запрос чтобы вызвать сервис
$HTTP_RAW_POST_DATA = isset( $HTTP_RAW_POST_DATA ) ? $HTTP_RAW_POST_DATA : '';
$server-> service( $HTTP_RAW_POST_DATA );

 

Пример рабочего кода сторона 1С (можно повесить на кнопку новой обработки):

 


// Настройка определений 
  стрДомен = “www.mysomedomain.ru”;
  Определения = Новый WSОпределения( 
    "http://" + стрДомен + "/" + стрПапкаНаСайте + "/exch_wsdl.php?wsdl" );
  Прокси = Новый WSПрокси( 
    Определения,
    "http://" + стрДомен + "/" + стрПапкаНаСайте + "/",
    "exch_ocStore_1C",
    "exch_ocStore_1CPort"
  );
// Вызов
  Запрос = "Проверка связи";
  Ответ = Прокси.test_connection( Запрос );
  Если не Запрос = Ответ Тогда
    Возврат;
  КонецЕсли;

 

Остальное пишется в зависимости от задачи. Замечу, что параметров (элементов первого масива) можно писать сколько угодно, желательно делать их строковыми и не передавать пустыми. А возвращаемые параметры (элементы второго массива), когда их больше одного становятся доступными через точку.

 

Google

Обновлено 17.02.2014 22:34
 
 

Мои проекты

1С франчази: Рафт-Софт.
разработка мобильных приложений

интернет-магазин 1onecall.ru

Каталог светодиодной продукции

kupi-salut.ru

Яндекс.Метрика