Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Обращение к web сервисам 1С из PHP

Обращение к web сервисам 1С из PHP
Я
   Кондидат В
 
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("Проверки прошли %)");

    }
 
 
   Buster007
 
1 - 12.09.18 - 13:58
хз как из пхп так делать, но достаточно вида ?твойпараметр="абырвалг"
   0xFFFFFF
 
2 - 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));
   0xFFFFFF
 
3 - 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 поделитесь пожалуйста примером
   0xFFFFFF
 
7 - 12.09.18 - 14:50
(6) XDTO это выдумка от 1С.
В PHP можно составить дерево данных (массив в массиве и т.п.) и передавать.
   0xFFFFFF
 
8 - 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;//атрибуты адреса

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует