|
XDTO-пакет и фасет fractionDigits | ☑ | ||
---|---|---|---|---|
0
Zyka
28.08.14
✎
23:22
|
Доброго времени суток уважаемые друзья, нужна ваша помощь.
В чем суть проблемы: необходимо чтобы SOAP отваливался ещё на стороне клиента (при проверке wsdl) если в значение параметра было передано число с разделителем "," ИЛИ количество цифр дробной части превышает три знака. Выходит: Необходимо описать тип значения входного параметра (веб-сервиса) по следующим критериям: <xs:minInclusive value="0"/> <xs:maxInclusive value="100000"/> <xs:fractionDigits value="3"/> НО! Используя базовый тип float (http://www.w3.org/2001/XMLSchema). По умолчанию данный фасет нельзя установить на тип значения float в XDTO-пакете, а было бы прекрасно, т.к. сам тип float не предусматривает разделителем знак ",". Пока пришлось делать так: <xs:restriction base="xs:decimal"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100000"/> <xs:fractionDigits value="3"/> </xs:restriction> Но как мы с вами знаем, типу decimal плевать на значение разделителя, однако указав разделителем знак "," в значение входного параметра число передается целым, вообще без дробной части. Прошу ваши советы, указы и наставления на эту тему. P.S. Для чего все это - во первых для повышения отказоустойчивости и снижения нагрузку с сервер, т.к. пользователь веб-сервиса может например забыть какой использовать разделитель, тем самым запрос отвалится ещё до обращения к серверу. Но что не мало важно, при стресс-тестах я обнаружил что в параметр можно передать число где дробная часть будет просто заоблачной и размер запроса будет достигать нескольких мегабайт, что разумеется не гуд. Всех откликнувшихся заранее благодарю. КонецСвязи |
|||
1
Crush
28.08.14
✎
23:32
|
(0) >Прошу ваши советы, указы и наставления на эту тему.
Встретится с тобой - большая честь, умный человек! Желаю успехов в твоём правидном деле!:) Где этот Гудвин, который раздает скилы ХДТО?!*мысли вслух* |
|||
2
Zyka
29.08.14
✎
11:37
|
up
|
|||
3
Jaap Vduul
29.08.14
✎
11:58
|
<xs:restriction base="decimal">
<xs:pattern value="[+-]?\d+\.\d{3}"/> </xs:restriction> |
|||
4
Apokalipsec
29.08.14
✎
12:03
|
вот он мастер регэкспа и шаблонов!)
|
|||
5
Apokalipsec
29.08.14
✎
12:05
|
+(4) На стороне 1Са этот регэксп прописывается в определении типа.
|
|||
6
Zyka
29.08.14
✎
12:44
|
(3) - спасибо за ответ. Однако я не так и не смог найти куда же прикрутить этот RegExp.
(5) - спасибо за ответ. "Определение типа" как я понял, является дублированием родителя, просто с установкой иных значений тех же параметров. pattern - в свою очередь в 1С представляется как "Образец" типа значения, т.к. передав туда значение test, в wsdl я вижу: <xs:pattern value="test"/>, однако передать туда RegExp я к сожалению не смог, т.к. 1С молвит: http://clip2net.com/s/iOMUlT Прошу подсказать где я повернул не туда. Спасибо. |
|||
7
alexei366
29.08.14
✎
12:53
|
(6) Это норм что он так пишет, это глюк платформы уже тянется с 8.3.3.
Так что выгружай схему (там сначала ставишь паттерн test), открываешь xsd, меняешь значение и загружаешь обратно, или тоже самое только через платформу 8.2 |
|||
8
Zyka
29.08.14
✎
13:15
|
(7) - всё прошло успешно.
Благодарю каждого откликнувшегося человека, с меня пиво. КонецСвязи |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |