Подключение к стороннему веб-сервису из 1С #732322


#0 by Dididi
Здравствуйте, помогите подключиться и записать данные в справочник 1С. Есть адреса и enstru.skc.kz/wsdl_server/php-wsdl.php. Раньше с веб-сервисами не работала. Нашла в инете, что надо создать объект WSссылка. Создала. Далее создала обработку. Добавила реквизиты форм для заполнения входных данных. - ссылка на схему веб-сервиса. И написала следующее: Выдает следующую ошибку: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (getByTime)         Данные = Прокси.getByTime(ДатаСЮникс,ДатаПоЮникс,Метод,КоличествоПозиции1); по причине: Ошибка вызова операции сервиса:  {urn:enstru}:enstruService:getByTime по причине: Неизвестная ошибка. Ошибка при вызове метода объекта модели XDTO. Неверный параметр. по причине: Ошибка при вызове метода объекта модели XDTO. Неверный параметр. Как заполнить параметры функции правильно?
#1 by DirecTwiX
Судя по всему, 1Ска ругается на третий параметр. Нужно посмотреть его тип, создать с помощью фабрикиXDTO, заполнить и передать в метод.
#2 by Dididi
Метод - это string, ("C" or "M"). Тогда мой код должен быть  таким?:
#3 by DirecTwiX
В 1Ске посмотри схему ссылки "URI" - это пространство имён, в котором находится тип (что-то похожее на "enstruService" в твоём случае, скорее всего) - в схеме всё наглядно видно.
#4 by DirecTwiX
Посмотрел схему.. ДатаСЮникс и ДатаПоЮникс - это числа, а не строки.
#5 by Jaap Vduul
Если судить по wsdl описанию, то первые три параметра - строковые, последний - целочисленный.
#6 by Dididi
А как задать дату в int UnixTimeStamp?
#7 by DirecTwiX
Но судя по описанию схемы, а не по рисунку, там и правда первые три параметра - строковые
#8 by Dididi
тут ДатаСЮникс     - строка. А в wsСсылке from - string Вопрос: из Строки в string надо преобразовывать? если да, то как? Я попробовала вот так: ТипМетода = Прокси.ФабрикаXDTO.Тип("urn:enstru", "string "); Но ошибка выходит: Форма.Форма.Форма}: Ошибка при вызове метода контекста (Создать) по причине: Несоответствие типов (параметр номер '1')
#9 by sapphire
<soapenv:Envelope xmlns:xsi="; xmlns:xsd="; xmlns:soapenv="; xmlns:urn="urn:enstru">
#10 by sapphire
Это где же?
#11 by Dididi
А как туда параметры правильно передать?
#12 by Jaap Vduul
Скорее всего, проблема не во входных параметрах (ибо там только примитивные типы), а в возвращаемом значении, которое объявлено как anyType и в результате 1цэ не может корректно распарсить getByTimeResponse.
#13 by sapphire
Ща шлянем, вот правильный wsdl:
#14 by sapphire
ну да, так и есть. Как вариант, по http отправлять мессагу из и парсить ответ
#15 by KirWas
Должно быть что-то похожее на следующее:     ТипДата = Прокси.ФабрикаXDTO.Пакеты.Получить(";); И только после этого ... И только если &НаСервере есть доступ к http: ... И если на нем правильно настройки проксисервера прописаны (это в настройках браузера или в 1С../Conf/inetcfg.xml)...
#16 by SUA
там тупо строки и число в исходящих параметрах
#17 by Dididi
а зачем нужен этот адрес? enstru.skc.kz/wsdl_server/php-wsdl.php
#18 by Dididi
Еще раз попробовала вот так:         ТипСтрока = ПроксиФабрикаXDTO.Тип(";, "string");          Ошибка: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (getByTime)         Данные = Прокси.getByTime(ДатаСЮниксСтр,ДатаПоЮниксСтр,МетодСтр,Лимит); по причине: Ошибка вызова операции сервиса:  {urn:enstru}:enstruService:getByTime по причине: Неизвестная ошибка. Ошибка при вызове метода объекта модели XDTO. Неверный параметр. по причине: Ошибка при вызове метода объекта модели XDTO. Неверный параметр.
#19 by KirWas
Если ещё актуально Танцевал с бубном вокруг аналогичного. ...Яндекс выдал "не каждый .wsdl работает с 1С" У себя проблему решил переписыванием .wsdl В Вашем случае если брать: <!-- WSDL file generated by Zend Studio. --> <definitions name="enstru" targetNamespace="urn:enstru" xmlns:typens="urn:enstru" xmlns:xsd="; xmlns:soap="; xmlns:soapenc="; xmlns:wsdl="; xmlns=";     <types> И запустить: То получаем уже: Ошибка вызова операции сервиса:  {urn:enstru}:enstruService:getByID по причине: Ошибка SOAP сервера:  SOAP-ERROR: Encoding: Violation of encoding rules Подозреваю, что из-за этого: use="encoded" encodingStyle="
#21 by Serginio1
#22 by sapphire
Зачем такие сложности?
#23 by Serginio1
Разве это сложности? Все элементарно. Но вот интересно, есть возможность в Net неопубликованные типы. Для этих целей конечно есть ExpandoObject
#24 by SUA
самое простое берем эту хрень загоняем в HTTP запрос типовым образом парсим XML времязатраты час
#25 by sapphire
Я о том же
#26 by Serginio1
Ну по сравнению с 21 трудозатраты во много раз выше. Там 5 минут выше крыши. Но есть еще вариант это изменить WSDL дать описание возвращаемых типов и прописать их в описании методов. И использовать уже этот файл. Можно статически, а можно и динамически ОпределениеТ=Новый WSОпределения(Файл_wsdl);
#27 by SUA
поставить .Net и следить за соответствием версий пилить конфиги, знать объекты .net что еще в 21 надо для 5 минут?
#28 by Serginio1
Следить за версиями не надо. А вот знать классы Net нужно. Но это не сложно. Можно и без конфигов обходиться, все прописывая в коде. Но с конфигами гибче. Кроме того существует масса ws протоколов где простого HTTP запроса будет просто недостаточно
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С