Имя: Пароль:
1C
1С v8
SOAP PHP 1c 8.2
,
0 koupny
 
29.07.11
15:45
Здравствуйте! Необходимо осуществить подключение 1С 8.2 к сайту через SOAP используя веб-сервис.
Проблема возникает, при передачи в веб-сервис значения параметра. Ошибка: "Недостаточно параметров операции по причине: Недостаточно параметров операции."

Когда параметров нету, все отлично работает.


soapParameters = Array('login' => "login", 'password' => "psw") ;
$client = new SoapClient("http://XX.XX.XX.XX/ws/ws1.1cws?wsdl", $soapParameters);
$result = $client->helloWorld();
echo $result->return;

А как правильно передать значения параметрам веб-сервиса?
Заранее спасибо!
1 Просто Лёха
 
29.07.11
15:48
У меня вот так работает:

$client = new SoapClient("http://127.0.0.1/wsserv/ws/service.1cws?wsdl" , array('login' => "Login", 'password' => "mypassword", 'exceptions' => 1));
       $params["Сотрудник"] = $cmluids;
       $params["ДатаНачала"] = $start_date;
       $params["ДатаОкончания"] = $end_date;
       $result = $client-> Returninfo($params);
2 Просто Лёха
 
29.07.11
15:52
(1) Returninfo - у меня так процедура экспортная веб сервиса называется
3 koupny
 
29.07.11
15:59
хм..странно, у меня такая ошибка:
"Fatal error: Uncaught SoapFault exception: [soap:Client] Неизвестная ошибка. Недостаточно параметров операции по причине: Недостаточно параметров операции "

Вот код мой:

$client = new SoapClient("http://127.0.0.1/wsgara/ws/ws1.1cws?wsdl", array('login' => "mylogin", 'password' => "mypsw",'exceptions' => 1));
 
$params["newparam"] = "1";
     
$result = $client-> helloWorld($params);

Может у меня проблема именно в конфигурации?

[URL=http://www.radikal.ru][IMG]http://s40.radikal.ru/i087/1107/be/19b5d75cabfe.jpg[/IMG][/URL]
4 koupny
 
29.07.11
16:01
5 Просто Лёха
 
29.07.11
16:04
(3) Если без параметров работает, а с параметром такая вещь - значит проблема к конфигурации
6 koupny
 
29.07.11
16:05
да( интересно в чем же именно(
7 Просто Лёха
 
29.07.11
16:05
свойства newparam - стоит галочка возможно пустое значение? И какой тип возвращаемого значения задан?
8 koupny
 
29.07.11
16:06
галочка не стоит. а тип - string
9 Fragster
 
гуру
29.07.11
16:06
10 Просто Лёха
 
29.07.11
16:06
Попробуй поставить и ещё раз проверить
11 koupny
 
29.07.11
16:09
галку поставил - такая же ошибка(
12 koupny
 
29.07.11
16:10
Самое интересное что, если параметра нету. Работает все отлично.
13 Просто Лёха
 
29.07.11
16:12
Туплю, у тебя параметра то нет (4)
14 Просто Лёха
 
29.07.11
16:14
(13) Т.е. не так поставь галочки и и свойству helloword и параметру свойства и newparam,  параметра псомотри так же типы значения, направления параметра
15 koupny
 
29.07.11
16:19
у helloWorld - галка "Возможно пусто значение" - стоит. Тип возвращаемого - string. Аналогично и у параметра newparam + направление передачи - "входной".
16 Просто Лёха
 
29.07.11
16:25
скинь то что отображается в браузере по ссылке
http://127.0.0.1/wsgara/ws/ws1.1cws?wsdl
17 koupny
 
29.07.11
16:36
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="helloWorld" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="helloWorld" name="webService" targetNamespace="helloWorld">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="helloWorld" targetNamespace="helloWorld" elementFormDefault="qualified">
<xs:element name="helloWorld">
<xs:complexType>
<xs:sequence>
<xs:element name="newparam" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="helloWorldResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string" nillable="true"/>
<xs:element name="newparam" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="helloWorldRequestMessage">
<part name="parameters" element="tns:helloWorld"/>
</message>
<message name="helloWorldResponseMessage">
<part name="parameters" element="tns:helloWorldResponse"/>
</message>
<portType name="webServicePortType">
<operation name="helloWorld">
<input message="tns:helloWorldRequestMessage"/>
<output message="tns:helloWorldResponseMessage"/>
</operation>
</portType>
<binding name="webServiceSoapBinding" type="tns:webServicePortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="helloWorld">
<soapbind:operation style="document"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="webServiceSoap12Binding" type="tns:webServicePortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="helloWorld">
<soap12bind:operation style="document"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="webService">
<port name="webServiceSoap" binding="tns:webServiceSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="http://127.0.0.1/wsgara/ws/ws1.1cws"/>
</port>
<port name="webServiceSoap12" binding="tns:webServiceSoap12Binding">
<soap12bind:address location="http://127.0.0.1/wsgara/ws/ws1.1cws"/>
</port>
</service>
</definitions>
18 Просто Лёха
 
29.07.11
17:00
(17) сейчас у себя попробую развернуть
19 koupny
 
29.07.11
17:15
попробуйте.. вдруг получиться, а то я не знаю уже в чем может быть проблема(
20 Просто Лёха
 
29.07.11
19:24
(19) Ну как бы все отлично, сейчас скину скрин
21 Просто Лёха
 
29.07.11
19:37
Код файла:

<?php

// Отключаем кэширование для SOAP. Если этого не сделать,
// функции веб-сервисов будут работать некорректно.
ini_set("soap.wsdl_cache_enabled", "0");

//Работа с исследованиями

$client = new SoapClient("http://192.168.1.10/MyApp/ws/preved.1cws?wsdl" , array('login' => "admin", 'password' => "admin", 'exceptions' => 1));
$params["param"] = "1234567890";

$result = $client->getinfo($params);
Var_dump($result);

?>
22 Просто Лёха
 
29.07.11
19:43
Версия 1С:Предприятие 8.2 (8.2.13.219)
База файловая, Apache 2.2, запускал с другого компа, т.к. на этом не стоит PHP, PHP Version 5.3.2-1
Поддржека Soap http://screencast.com/t/7EyaLj2iL

Обращение в веб сервису
http://screencast.com/t/2lLqfY8jx
23 koupny
 
29.07.11
22:52
Алексей! Вы молодец, все получилось, проблема была в кэширование wsdl. Как только это сделал, все заработало!

Спасибо большое за потраченное время!
24 Просто Лёха
 
30.07.11
02:18
Да не за что
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn