21.08.2020 11:46
lev292
 
Добрый день.
Пытаюсь загрузить из 1С бонусы в SetRetail.

Написал такой код:

Парам = Прокси.ФабрикаXDTO.Создать(ПространсвоИмен, "chargeOnBonusAccount");
Парам.activatingDate = НачалоДня(ТекущаяДата());
Парам.expirationDate = НачалоДня(ТекущаяДата()+30*24*60*60);
Парам.cardNumber = НомерКарты;
Парам.chargeSum = 1000;
Парам.bonusAccountType = 579725;

Парам.shopNum = 1;//1;
Парам.cashNum = 1;//1;
Парам.shiftNum = 1;//1;
Парам.checkNum = 2;//2;

Результат = Прокси.chargeOnBonusAccount(Парам);

В результате выдает ошибку:
Недостаточно фактических параметров
{ВнешняяОбработка.ОбменДанными_SETRetail10.МодульОбъекта(2109)}: Результат = Прокси.chargeOnBonusAccount(Парам);

Каких еще параметров не хватает? Всю голову уже сломал.
21.09.2020 18:07
talkon
 
Попробуйте по аналогии:
Либо:
Код:
Процедура Процедура2(lastName)      
	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>");
	Сообщить("Загружен");             
КонецПроцедуры
Либо:
Код:
Процедура КоманднаяПанель2кнMSXML(Кнопка)
	каталогТемп = КаталогВременныхФайлов();
	имяФайлаXML = ""+каталогТемп+"ZReports.xml" ;
	
	МестоположениеWSDL= "192.168.101.101:8090";
	Запрос =  "

            |<soapenv:Envelope xmlns:soapenv=""хэttp://schemas.xmlsoap.org/soap/envelope/""; xmlns:plug=""хэttp://plugins.operday.ERPIntegration.crystals.ru/"">;

            |<soapenv:Header/>

            |<soapenv:Body>

            |<plug:getPurchasesByParams>

            |<dateOperDay>"+Формат(Дата1,"ДФ=""yyyy-MM-dd""")+"</dateOperDay>

            |<shopNumber>3</shopNumber>

            |</plug:getPurchasesByParams>

            |</soapenv:Body>

            |</soapenv:Envelope>";     

            MSXML = Новый COMОбъект("MSXML2.XMLHTTP");

            MSXML.open("POST", "хэttp://" + МестоположениеWSDL + "/SET-ERPIntegration/FiscalInfoExport?wsdl", 0);

            MSXML.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

            MSXML.setRequestHeader("Content-Length", СтрДлина(Запрос));

            MSXML.setRequestHeader("SOAPAction", "getPurchasesByOperDay");

            MSXML.send(Запрос);

            ОтветПолучен = Ложь;

            Для НомерЦикла = 1 по 100 Цикл

                Если MSXML.readyState > 3 Тогда

                    ОтветПолучен = Истина;

                    Прервать;

                КонецЕсли;      

            КонецЦикла;  

            

            Если ОтветПолучен Тогда

                ДвоичныеДанные = Base64Значение(MSXML.responseXML.text);
				ДвоичныеДанные.Записать(имяФайлаXML);
            КонецЕсли;      
	КонецПроцедуры
10.08.2021 11:57
talkon
 
Цитата:
lev292 Каких еще параметров не хватает? Всю голову уже сломал.
Теперь и у меня появилась необходимость зачислять бонусы с 1ски, удалось ли решить данную задачу?

в вашем коде нужно было указать все параметры в методе:
Код:
WSПрокси.chargeOnBonusAccount(WSпараметр.cardNumber,
			WSпараметр.bonusAccountType,
			WSпараметр.shopNum,
			WSпараметр.cashNum,
			WSпараметр.shiftNum,
			WSпараметр.checkNum,
			WSпараметр.chargeSum,
			WSпараметр.activatingDate,
			WSпараметр.expirationDate
			);
только теперь столкнувшись это понимаю.

Сейчас застрял на том что бонусы начисляются, но как я понял 1с неможет нормально разобрать ответ и выпадает в ошибку:

{ВнешняяОбработка.ТестВеб.Форма.Форма.Форма(50)}: Ошибка при вызове метода контекста (chargeOnBonusAccount)
WSПрокси.chargeOnBonusAccount(WSпараметр.cardNumber,
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {хэttp://processing.cards.crystals.ru/}:ExternalSystemsProcessingService:chargeOnBonusAccount()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: {хэttp://processing.cards.crystals.ru/}bonusChargeOperationResponseVO - [1,278]
Проверка дополнительного свойства:
форма: Элемент
имя: errorCode
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {хэttp://processing.cards.crystals.ru/}bonusChargeOperationResponseVO - [1,278]
Проверка дополнительного свойства:
форма: Элемент
имя: errorCode
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {хэttp://processing.cards.crystals.ru/}bonusChargeOperationResponseVO

может кто то сталкивался с таким, подтолкните в нужном направлении.
10.08.2021 13:00
asfw7qlm2
 
При отправке запроса на начисление, например через SoapUI, у в случае успеха, ответ выглядит так:



(0,05Мб)

если карта не существует, ответ примерно такой:
Цитата:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:chargeOnBonusAccountResponse xmlns:ns2="http://processing.cards.crystals.ru/">
<return>
<errorCode>1</errorCode>
<errorText>CARD_NOT_FOUND_ERROR</errorText>
</return>
</ns2:chargeOnBonusAccountResponse>
</soap:Body>
</soap:Envelope>
неправильный номер счета:
Цитата:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:chargeOnBonusAccountResponse xmlns:ns2="http://processing.cards.crystals.ru/">
<return>
<errorCode>7</errorCode>
<errorText>BONUS_CHARGE_ERROR</errorText>
</return>
</ns2:chargeOnBonusAccountResponse>
</soap:Body>
</soap:Envelope>
10.08.2021 13:06
asfw7qlm2
 
Получается, что при успехе, Set10 возвращает еще и transactionId. А он у вас, похоже, является неожиданным, тогда 1С при получении ответа делает так:
10.08.2021 13:27
talkon
 
Цитата:
asfw7qlm2 Получается, что при успехе, Set10 возвращает еще и transactionId. А он у вас, похоже, является неожиданным, тогда 1С при получении ответа делает так:
Да, это я понимаю, он даже не на transactionId спотыкается, а еще на errorCode.
Только нет понимания как 1ске сказать что придут эти параметры.

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