Задать вопрос
@xagent

Как из тегов xml сделать правильный массив PHP для SOAP в 1С?

Добрый день!
Ни как не догоню как сделать некоторые переменные для SOAP

есть такой запрос:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ru="ru.umc" xmlns:core="http://v8.1c.ru/8.1/data/core">
   <soap:Header/>
   <soap:Body>
      <ru:BookAnAppointmentWithParams>
         <ru:EmployeeID>b7995b97-e511-11e8-87af-485b39d0ac73</ru:EmployeeID>
         <ru:PatientSurname>Иванов</ru:PatientSurname>
         <ru:PatientName>Иван</ru:PatientName>
         <ru:PatientFatherName>Петрович</ru:PatientFatherName>
         <ru:Date>2019-04-19T00:00:00</ru:Date>
         <ru:TimeBegin>0001-01-01T10:05:00</ru:TimeBegin>
         <ru:Comment>test</ru:Comment>
         <ru:Phone>891112345678</ru:Phone>
         <ru:Email>some@email.ru</ru:Email>
         <ru:Address>Черноморская 5</ru:Address>
         <ru:Clinic>546546-cc73-11e8-9c03-54645645645</ru:Clinic>
         <ru:GUID></ru:GUID>
         <ru:Params>
            <!--Zero or more repetitions:-->
            <core:Property name="Birthday">
               <core:Value>1999-01-01T00:00:00</core:Value>
            </core:Property>
            <core:Property name="Duration">
             <core:Value>0001-01-01T00:30:00</core:Value>
             </core:Property>
         </ru:Params>
         <ru:Service>b29148a5-e518-11e8-87af-485b39d0ac73</ru:Service>
      </ru:BookAnAppointmentWithParams>
   </soap:Body>
</soap:Envelope>

Отправляю его на сервер с помощью:

$client = new SoapClient(WSDL, array('login' => WSDL_LOGIN, 'password' => WSDL_PWD));
 
 
$propertyArr = array();
$propertyArr[]=['name'=>'Birthday', 'value'=>'1999-01-01T00:00:00'];
$propertyArr[]=['name'=>'Duration', 'value'=>'0001-01-01T00:30:00'];
 
$query= array('EmployeeID'=>'b7995b97-e511-11e8-87af-485b39d0ac73', 'PatientSurname'=>'Иванов','PatientName'=>'Иван','PatientFatherName'=>'Петрович', 'Date'=>'2019-04-19T00:00:00', 'TimeBegin'=>'0001-01-01T00:00:00', 'Comment'=>'test', 'Phone'=>'891112345678', 'Email'=>'some@email.ru', 'Address'=>'Черноморская 5', 'Clinic'=> '546546-cc73-11e8-9c03-54645645645',
'GUID'=>'', 'Params'=> $propertyArr, 'Service'=>'b29148a5-e518-11e8-87af-485b39d0ac73');
 
$result = $client->BookAnAppointmentWithParams($query);

загвоздка вот в этих параметрах :
<ru:Params>
<!--Zero or more repetitions:-->
<core:Property name="Birthday">
<core:Value>1999-01-01T00:00:00</core:Value>
</core:Property>
<core:Property name="Duration">
<core:Value>0001-01-01T00:30:00</core:Value>
</core:Property>
</ru:Params>


все попадает в 1с кроме их (сам xml правильный когда его отправляю через SoapUI - все доходит)
не пойму как создать массив их этих параметров:
<core:Property name="Birthday">
<core:Value>1999-01-01T00:00:00</core:Value>
?
  • Вопрос задан
  • 434 просмотра
Подписаться 1 Средний 8 комментариев
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$propertyArr = array();
$propertyArr[] = new SoapVar(
  (object)['name' => 'Birthday', 'value' => '1999-01-01T00:00:00'],
  SOAP_ENC_OBJECT,
  'Property', 
  'core');
$propertyArr[] = new SoapVar(
  (object)['name' => 'Duration', 'value' => '0001-01-01T00:30:00'],
  SOAP_ENC_OBJECT,
  'Property', 
  'core');
Ответ написан
Ваш ответ на вопрос

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

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