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

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

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

195.201.135.150 использует недействительный сертификат безопасности. Сертификат действителен только для следующих имён: *.bronevik.com, bronevik.com
10 Cyberhawk
 
15.11.18
10:13
Владелец 195.201.135.150 неправильно настроил свой веб-сайт. Чтобы защитить вашу информацию от кражи, Firefox не соединился с этим веб-сайтом.
11 Cyberhawk
 
15.11.18
10:14
Так что пока веб-админ не замутит правильный ХТТПС, из 1С не мечтай воспользоваться этим добром
12 alf2006x
 
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()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка работы с Интернет:   Не могу установить соединение
по причине:
Ошибка работы с Интернет:   Не могу установить соединение

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

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

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

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

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

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

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

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