|
Обращение к web сервисам 1С из PHP | ☑ | ||
---|---|---|---|---|
0
Кондидат В
12.09.18
✎
13:54
|
Ребят, подскажите, как передать параметры в SOAP метод 1С.
Когда вызываю без параметров, все ОК. Обертка SOAP: class TMSoap { private $proxy; public $settings; public function __construct($wsdl_id){ try{ $this->settings = SoapSettings::where('id','=',$wsdl_id)->get(); $wsdl = $this->settings[0]->wsdl; $this->proxy = new SoapClient($wsdl,[ 'trace' => true, 'login' => $this->settings[0]->user, 'password' => $this->settings[0]->password]); }catch (\Exception $exception){ dd('Нет данных для выбранной настройки. ' . $exception->getMessage()); } } public function call($method, $params){ return $this->proxy->__soapCall($method, $params); } public function checkData($params){ try{ foreach($params as $method=>$params){ /*if($method=='checkOrder') dd($method);*/ $result = $this->call($method,$params); if(!$result) dd("Не удалось пройти проверку.".$method); } }catch(\Exception $exception){ dd("Ошибка проверки данных.".$exception->getMessage()); } } } Вызов с параметрами: public function createSurvey($wsdl_id, $order_id){ $this->tmSoap = new TMSoap($wsdl_id); $this->tmSoap->checkData([ 'checkOrder'=>['uid'=>$order_id], 'checkQuestionary'=>['code'=>$this->tmSoap->settings[0]->questionary_code] ]); dd("Проверки прошли %)"); } |
|||
1
Buster007
12.09.18
✎
13:58
|
хз как из пхп так делать, но достаточно вида ?твойпараметр="абырвалг"
|
|||
2
0xFFFFFF
12.09.18
✎
14:00
|
$client = new SoapClient("wsdl/1c.xml", array("login" => $login, "password" => $pass, "exceptions" => true));
$result = $client->GetOrderList(array('pos_start'=>$cache_start, 'pos_end'=>$cache_end, 'status'=>$status)); |
|||
3
0xFFFFFF
12.09.18
✎
14:03
|
(1) речь про SOAP а не про HTTP
|
|||
4
Кондидат В
12.09.18
✎
14:09
|
(2)
Примного благодарен :) |
|||
5
Кондидат В
12.09.18
✎
14:15
|
В SOAP обертке обновил метод Call до вида
public function call($method, $params){ return $this->proxy->__soapCall($method, Array($params)); } |
|||
6
Кондидат В
12.09.18
✎
14:22
|
С простыми типами все понятно. А как туда отправить XDTO поделитесь пожалуйста примером
|
|||
7
0xFFFFFF
12.09.18
✎
14:50
|
(6) XDTO это выдумка от 1С.
В PHP можно составить дерево данных (массив в массиве и т.п.) и передавать. |
|||
8
0xFFFFFF
12.09.18
✎
14:56
|
Ну и возвращаемый от 1С (так называемый XDTO) не вызывает никаких проблем.
Вот например получение реквизитов юл по ИНН через стандартный 1совый сервис $client = new SoapClient("https://api.orgregister.1c.ru/orgregister/v7?wsdl",array("login"=>$login, "password"=>$pass, "exceptions"=>true)); $params = array("INN"=>$inn); try{ $result = $client->getCorporationRequisitesByINN($params);//=>, "configurationName"=>"БухгалтерияПредприятия")); } catch(SoapFault $e){ return array("result"=>false, "error" => $e->getMessage()); } $attr = $result->РеквизитыЮрЛица->СвАдрес->Адрес->Состав->enc_value;//атрибуты адреса |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |