Имя: Пароль:
1C
1С v8
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) - всё прошло успешно.

Благодарю каждого откликнувшегося человека, с меня пиво.

КонецСвязи