29.01.2020 12:23
talkon
 
Приветствую.
Пытаюсь сделать заведение кассира по SOAP из 1С:Предприятие 8.2
Подключил WS-ссылку: хэttp://IP-адрес_сервера:8090/SET-ERPIntegration/CashiersImport?wsdl

Накидал по примеру из интернета следующий кусок кода:
Код:
	Прокси = WSСсылки.WSСсылка1.СоздатьWSПрокси(
					"хэttp://ws.cashiers.ERPIntegration.crystals.ru/", "CashiersImportService", "CashiersImportPort");		
	ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить(
                                        "хэttp://ws.cashiers.ERPIntegration.crystals.ru/").Получить("importCashiers");									
	WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
	WSПараметр.xml = ПолеВвода1;
	Прокси.importCashiers(WSПараметр);
В ПолеВвода1 вписываю следующую строку:
Код:
<![CDATA[<cashUsers><cashUser><tabNum>0000005555</tabNum><firstName>Тест</firstName><lastName>Тест</lastName><middleName>Тестович</middleName><password>11111</password><role>Администратор</role><barcode>1168040064850</barcode><Blocked>false</Blocked><shop-index>5</shop-index></cashUser></cashUsers>]]>
При выполнении получаю ошибку:

{Форма.Форма.Форма(39)}: Ошибка при вызове метода контекста (importCashiers)
Прокси.importCashiers(WSПараметр);
по причине:
Ошибка вызова операции сервиса: {хэttp://ws.cashiers.ERPIntegration.crystals.ru/}:CashiersImportService:importCashiers()
по причине:
Ошибка SOAP сервера: Unmarshalling Error: unexpected element (uri:"хэttp://ws.cashiers.ERPIntegration.crystals.ru/", local:"xml"). Expected elements are (none)
29.01.2020 12:28
OlegON
 
Цитата:
talkon unexpected element (uri:"хэttp
какая-то очень древняя дока, видимо, поскольку ни эта ссылка не жива, ни домен ее...
29.01.2020 19:04
talkon
 
упустил один момент: через SOAP Ui все срабатывает как надо
29.01.2020 19:13
talkon
 
Цитата:
OlegON какая-то очень древняя дока, видимо, поскольку ни эта ссылка не жива, ни домен ее...
Для общеобразовательности:
URI пространства имен не используется парсером для получения какой-либо информации. Цель всего этого состоит в том, чтобы дать пространству имен уникальное имя. Тем не менее, часто компании используют пространство имен, как указатель на веб-страницу с информацией об этом пространстве имен.

P/S: сам только что об этом узнал
29.01.2020 19:44
OlegON
 
Пардон... Этот недоязык 1С, я сослепу решил, что это действительно сетевой прокси поднимается... Кто же знал, что оно там в себя принимает...
31.01.2020 11:57
TANGOR
 
Для начала, надо брать примеры из оригинальных источников а не из интырнетов...


Попробуйте добавить рутовый тег xml

Т.е. в вашем случе результат должен быть таким:

<xml>
<![CDATA[<cashUsers><cashUser><tabNum>0000005555</tabNum><firstName>Тест</firstName><lastName>Тест</lastName><middleName>Тестович</middleName><password>11111</password><role>Администратор</role><barcode>1168040064850</barcode><Blocked>false</Blocked><shop-index>5</shop-index></cashUser></cashUsers>]]>
</xml>
31.01.2020 12:56
talkon
 
на сайте SET я не нашел примера как делать запрос из 1с, как я уже упоминал через SOAP UI кассир успешно заводится без каких либо проблем.
добавил тег <xml>, получил тот же результат
03.02.2020 19:36
vitamin
 
Попробуйте так
Сначала формируете xml с кассирами согласно документации
Затем
//кассиры
Ссыль = Новый WSОпределения("http://"+ip:8090+"/SET-ERPIntegration/CashiersImport?wsdl");
СЕТ = Новый WSПрокси(Ссыль, "http://ws.cashiers.ERPIntegration.crystals.ru/", "CashiersImportService", "CashiersImportPort");
СЕТ.importCashiers(Base64Строка(Новый ДвоичныеДанные(Путькфайлукассиров)));
04.02.2020 12:03
talkon
 
Попробовал, получил следующую ошибку:

{Форма.Форма.Форма(49)}: Ошибка при вызове метода контекста (importCashiers)
СЕТ.importCashiers(Base64Строка(Новый ДвоичныеДанные("D:\soapui.xml")));
по причине:
Ошибка вызова операции сервиса: {ХЭttp://ws.cashiers.ERPIntegration.crystals.ru/}:CashiersImportService:importCashiers()
по причине:
Ошибка SOAP сервера: Could not parse XML (cashiers).


Я делал так:
Код:
	
        ip = "127.0.0.1:8090";	
	Ссыль = Новый WSОпределения("ХЭttp://"+ip+"/SET-ERPIntegration/CashiersImport?wsdl");
	СЕТ = Новый WSПрокси(Ссыль, "ХЭttp://ws.cashiers.ERPIntegration.crystals.ru/", "CashiersImportService", "CashiersImportPort");
	СЕТ.importCashiers(Base64Строка(Новый ДвоичныеДанные("D:\soapui.xml")));
и последнюю строку так переписывал: СЕТ.importCashiers("D:\soapui.xml"); т.к. при импорте кассиров в BASE64 ненужно переводить.

XML выглядит так:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="ХЭttp://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="ХЭttp://ws.cashiers.ERPIntegration.crystals.ru/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:importCashiers>
         <!--Optional:-->
         <xml><![CDATA[<cashUsers>
    <cashUser>
        <tabNum>0000005932</tabNum>
        <firstName>Тест</firstName>
        <lastName>Тест</lastName>
        <middleName>Тестович</middleName>
        <password>11682</password>
        <role>Администратор</role> 
        <barcode>1168040064862</barcode>
        <Blocked>false</Blocked>
        <shop-index>5</shop-index>
    </cashUser>
 </cashUsers>]]></xml>
      </ws:importCashiers>
   </soapenv:Body>
</soapenv:Envelope>

У Вас получилось завести кассира с помощью вашего кода?
Что я делаю не так?
06.02.2020 11:12
talkon
 
На форме разместил поля для заполнения и подставил их содержимое в разметку.
Вот так работает:
Код:
	ip = "192.168.101.101:8090";//ссылка на сервер SET10	
	Ссыль = Новый WSОпределения("ХЭttp://"+ip+"/SET-ERPIntegration/CashiersImport?wsdl"); //ссылка на WSDL файл 
	СЕТ = Новый WSПрокси(Ссыль, "ХЭttp://ws.cashiers.ERPIntegration.crystals.ru/", "CashiersImportService", "CashiersImportPort");
	СЕТ.importCashiers("<cashUsers>
							|<cashUser>
								|<tabNum>"+tabNum+"</tabNum>
								|<firstName>"+firstName+"</firstName>
								|<lastName>"+lastName+"</lastName>
								|<middleName>"+middleName+"</middleName>
								|<password>"+password+"</password>
								|<role>"+role+"</role>
								|<barcode>"+barcode+"</barcode>
								|<Blocked>false</Blocked>
								|<shop-index>"+shopindex+"</shop-index>
							|</cashUser>
						|</cashUsers>");
Часовой пояс GMT +3, время: 02:09.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.