Как правильно обратиться к вебсервису 1с??

Опубликовал вебсервис на 1с.
При обращении к вебсервису из SOAP UI,
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sam="http://www.sample-package.org">
   <soap:Header/>
   <soap:Body>
      <sam:PoschitatDoxod>
         <sam:Data1>2015-01-01</sam:Data1>
         <sam:Data2>2015-05-01</sam:Data2>
      </sam:PoschitatDoxod>
   </soap:Body>
</soap:Envelope>


он выдает XML вида.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
   <soap:Header/>
   <soap:Body>
      <m:PoschitatDoxodResponse xmlns:m="http://www.sample-package.org">
         <m:return xsi:type="m:Otchet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <m:strokaOtcheta>
               <m:doxod>7777777</m:doxod>
               <m:razxod>7777777</m:razxod>
               <m:podrazdelenie>Тест</m:podrazdelenie>
            </m:strokaOtcheta>
            <m:strokaOtcheta>
               <m:doxod>7777777</m:doxod>
               <m:razxod>7777777</m:razxod>
               <m:podrazdelenie>Тест</m:podrazdelenie>
            </m:strokaOtcheta>
            <m:strokaOtcheta>
               <m:doxod>7777777</m:doxod>
               <m:razxod>7777777</m:razxod>
               <m:podrazdelenie>Тест</m:podrazdelenie>
            </m:strokaOtcheta>
            <m:strokaOtcheta>
               <m:doxod>7777777</m:doxod>
               <m:razxod>7777777</m:razxod>
               <m:podrazdelenie>Тест</m:podrazdelenie>
            </m:strokaOtcheta>
         </m:return>
      </m:PoschitatDoxodResponse>
   </soap:Body>
</soap:Envelope>


То есть все нормально получается.
Теперь пробую обратиться к вебсервису из PHP.
<?php 
error_reporting( E_ERROR ); // 1. Отключаем лишние сообщения 
ini_set("soap.wsdl_cache_enabled", "0" ); 
// 3. Устанавливаем soap-соединение 
$client = new SoapClient("http://localhost/doxod/ws/doxod.1cws?wsdl", 
array( 
'login' => null, //логин, аутентификацию выполнять не будем 
'password' => null, //пароль 
'trace' => true, 
'features' => SOAP_USE_XSI_ARRAY_TYPE, 
//'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5 
) 
); 

$params["Data1"] = 2015-01-01; 
$params["Data2"] = 2015-05-01; 

// 5. Выполняем операцию 
$result = $client->PoschitatDoxod($params)->return->strokaOtcheta;
// 6. Выводим результат на экран 
var_dump($result); 
?>


В ответ получаю только NULL. Что ж я такого сделал не так?

Если получать просто
$result = $client->PoschitatDoxod($params)
то ответ будет таким
object(stdClass)#2 (1) { ["return"]=> object(stdClass)#3 (0) { } }
  • Вопрос задан
  • 2759 просмотров
Решения вопроса 1
mgis
@mgis Автор вопроса
"Нубанул" че то...
Надо было параметры в кавычки заключить.
$params["Data1"] = "2015-01-01"; 
$params["Data2"] = "2015-05-01";
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
65536
@65536
не уверен, но может быть это та проблема. там по схеме для одиночных параметров предполагается отправка в виде массива с не помню каким индексом, то есть что то вроде $params["Data1"] = array('???' => 2015-01-01); не помню как точно, но сам голову ломал потом забывал и еще раз ломал
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы