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


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

WS ссылка: ошибка проверки данных XDTO (Несоответствие фасету)

WS ссылка: ошибка проверки данных XDTO (Несоответствие фасету)
Я
   alf2006x
 
31.05.18 - 16:21
Всем хорошего дня.

Столкнулся с проблемой. Поставщик дал мне ссылку на wsdl:
https://app-dev.mostaxi.ru/external-ws/adler/wsdl

Я загружаю её в WS-ссылки (объект добавился и появился в конфигураторе: 8.3.9.1818), но при попытке открыть WS-ссылку 1С выдаёт сообщение об ошибке:

по причине:
Ошибка проверки данных XDTO:
Значение: '(0?[1-9]|1[0-2])\/[0-9]{2}' не соответствует простому типу: {http://www.haulmont.com/sherlock/adler}monthYear
Несоответствие фасету Pattern = '(0?[1-9]|1[0-2])\/[0-9]{2}'
по причине:
failed to compile: xmlFAParseRegExp: extra characters

Поставщик утверждает что проблема на стороне 1С. Аргументирует тем, что ссылка загружается в SOAP UI без ошибок (подтверждаю!).

Тупик. Что делать дальше - не знаю, но настроить взаимодействие необходимо.

Подскажите куда искать?
 
 
   тарам пам пам
 
1 - 31.05.18 - 17:07
Если \/ заменить на просто /, то нормально грузится. Зачем вообще косую черту экранировали? "/" вроде не является служебным символом в регулярках.
   alf2006x
 
2 - 14.11.18 - 10:13
День добрый.
В продолжение темы WS ссылок.
Очень нужна помощь, т.к. пока совсем не наблюдаю перспектив решения своего вопроса.
Проблема в следующем.
Имеем:
wsdl: https://195.201.135.150/v2.1.0/api.php?wsdl
endpoint: https://195.201.135.150/v2.1.0/api.php
clientKey: zdcobyklj280bkj37sz3u5p29p59
login: test_test_api
password: 0Vqmm1q

Через SOAPUI все замечательно отрабатывает (возвращает какой-то уникальный traceid и мой отправленный произвольный текст).

Но из 1С я почему-то не могу сделать то же самое.
Код:
    БроневикАПИ = WSСсылки.Bronevik.СоздатьWSПрокси("soap.bronevik", "Bronevik", "ProductionSOAP",,,Новый ЗащищенноеСоединениеOpenSSL);//

    
    ТипWSПараметра_PingRequest     = БроневикАПИ.ФабрикаXDTO.Пакеты.Получить("soap.bronevik").Получить("PingRequest");// 

    ТипWSПараметра_Credentials     = БроневикАПИ.ФабрикаXDTO.Пакеты.Получить("soap.bronevik").Получить("Credentials");
    
    //Создаем параметр на основе типа и заполняем значение параметра On_Date.

    WSПараметр_PingRequest           = БроневикАПИ.ФабрикаXDTO.Создать(ТипWSПараметра_PingRequest);
    
    WSПараметр_Credentials         = БроневикАПИ.ФабрикаXDTO.Создать(ТипWSПараметра_Credentials);
    WSПараметр_Credentials.clientKey     = "zdcobyklj280bkj37sz3u5p29p59";
    WSПараметр_Credentials.login         = "test_test_api";
    WSПараметр_Credentials.password     = "0Vqmm1q";
    
    WSПараметр_PingRequest.credentials = WSПараметр_Credentials;
    WSПараметр_PingRequest.data = "TestPing";
    WSПараметр_PingRequest.language = "ru";
    
    ОтветСервераБроневик = БроневикАПИ.ping(WSПараметр_PingRequest);

При выполнении команды ping вылезает вот что:

Ошибка при вызове метода контекста (ping)
    ОтветСервераБроневик = БроневикАПИ.ping(WSПараметр_PingRequest);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {soap.bronevik}:Bronevik:ping()
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера:  Неверные данные авторизации
Код ошибки: Server
Техническая информация:
<detail xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:ns1="soap.bronevik">

    <ns1:Fault/>
</detail>

Предъявить что-то поставщику WS ссылки я не могу, так как через SOAPUI всё пингуется нормально.
Подскажите, пожалуйста, на чьей стороне ошибка, что мне сделать в обработке или что сказать поставщику, чтобы он поправил?
   Cyberhawk
 
3 - 14.11.18 - 10:19
Морально готовься в 1С вместо WS-соединения использовать ХТТП-соединение и формирование текста запросов вручную (подсматривая в свой СоапУИ). Это геморный вариант, но с гарантированным успехом.
   Cyberhawk
 
4 - 14.11.18 - 10:20
Ну а так-то у тебя ссылка хттпс, но соединение не защищенное
   Cyberhawk
 
5 - 14.11.18 - 10:21
А ты конструктору ВС-прокси суешь использование ССЛ
   alf2006x
 
6 - 14.11.18 - 11:08
Ну вроде сую (Новый ЗащищенноеСоединениеOpenSSL)
БроневикАПИ = WSСсылки.Bronevik.СоздатьWSПрокси("soap.bronevik", "Bronevik", "ProductionSOAP",,,Новый ЗащищенноеСоединениеOpenSSL)

Конечно, возможно это не то, что надо туда сувать.
Ну или сувать надо как-то по-другому?
   Cyberhawk
 
7 - 14.11.18 - 11:58
Браузер ругается на сертификат безопасности - надо с этим разобраться, думаю
   alf2006x
 
8 - 15.11.18 - 10:08
У меня даже нет представления с чего начать :(

Рискну предположить что я должен использовать в своём соединении какой-то ССЛ сертификат, который мне надо запросить у поставщика, и этот сертификат нужно каким-то образом скормить функции СоздатьWSПрокси, верно?
   Cyberhawk
 
9 - 15.11.18 - 10:13
(8) Открой уже, епта, в ФФ всдл-описание веб-сервиса и посмотри, в чем косяк сертификата сайта:

195.201.135.150 использует недействительный сертификат безопасности. Сертификат действителен только для следующих имён: *.bronevik.com, bronevik.com
   Cyberhawk
 
10 - 15.11.18 - 10:13
Владелец 195.201.135.150 неправильно настроил свой веб-сайт. Чтобы защитить вашу информацию от кражи, Firefox не соединился с этим веб-сайтом.
 
 Рекламное место пустует
   Cyberhawk
 
11 - 15.11.18 - 10:14
Так что пока веб-админ не замутит правильный ХТТПС, из 1С не мечтай воспользоваться этим добром
   alf2006x
 
12 - 15.11.18 - 14:27
Веб-админ замутил условно правильный хттп:
http://195.201.135.150/v2.1.0/api.php?wsdl

Но он всё равно отказывается работать из 1С (ССЛ из подключения выкинул)
В СОАП по-прежнему всё хорошо...

Правда в 1С теперь новая ошибка:

Ошибка при вызове метода контекста (ping)
    ОтветСервераБроневик = БроневикАПИ.ping(WSПараметр_PingRequest);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {soap.bronevik}:Bronevik:ping()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка работы с Интернет:   Не могу установить соединение
по причине:
Ошибка работы с Интернет:   Не могу установить соединение
Сплошная печаль какая-то
   Cyberhawk
 
13 - 15.11.18 - 21:14
Ну, теперь ВСДЛ правильный. А у тебя нет доступа до этого хоста просто там, где выполняется код
   alf2006x
 
14 - 16.11.18 - 09:34
СОАПУИ находится там же, где 1С
В нём все отправляется и ответ возвращается (значит доступ до хоста видимо всё-таки есть)
А в 1С выдаёт ошибку. Почему?
Значит всё-таки в подключении из 1С что-то сделано не так?
   Cyberhawk
 
15 - 16.11.18 - 09:48
Хз зачем ты это пишешь. Вроде выше Я предельно понятно написал причину.
   alf2006x
 
16 - 16.11.18 - 17:50
Ну не догоняю я...
Что значит "нет доступа до этого хоста там где выполняется код?"

Код вместе с 1С находится на сервере. На этом же сервере установлен SOAPUI.

Из SOAPUI запрос обрабатывается нормально, без каких-либо ошибок.
Из 1С выдаёт соответствующую ошибку (которую я описал последней).

Как мне в 1С (для 1С) настроить доступ до этого хоста?
Меня хватило только на то, чтобы сделать текст, который в (2)
   alf2006x
 
17 - 16.11.18 - 17:51
Или тут дело не в коде который я написал, а в каких-то настройках?
   Вафель
 
18 - 16.11.18 - 17:52
так ты передаешь где-то строку, которая не проходит по регекспу.
сама схема тут не причем
   Вафель
 
19 - 16.11.18 - 17:54
   alf2006x
 
20 - 19.11.18 - 10:31
(18) Я дико извиняюсь, это ответ на (2)?

Если да - то я совсем не понимаю. Схема про регэксп красивая, но как приобщить её к моему случаю я не знаю.

Можете просто пальцем тыкнуть, что в такой-то строке надо написать то-то и тогда всё заработает?
Или тут совсем всё плохо и надо уже плюнуть и воспользоваться советом из (3) ?
   Cyberhawk
 
21 - 19.11.18 - 11:23
Сколько платят за решение вопроса?
   alf2006x
 
22 - 19.11.18 - 11:32
Так всё серьёзно?
Я думал тут где-то точки с запятой не хватает ))

Я только хотел чтобы работа с WS была красиво оформлена. Но раз проблема это решается только за деньги - то пойду рисовать хттп запрос. Когда-нибудь найду красивое решение.

PS. А почем обычно решают такой вопрос?
   alf2006x
 
23 - 22.11.18 - 22:25
Ммм...дяа... ((


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