|
сделать значение на основе SimpleType в xsd схеме, подскажите как | ☑ | ||
---|---|---|---|---|
0
Бархат
16.05.18
✎
10:07
|
Добрый день товарищи! Крым наш!
Подскажите, пожалуйста, вот есть схема xsd. Там в фабрику закинул, по свойствам расписал, все нормально... но вот у конечных свойств в схеме указан тип, например "typeAddrTotal" <xs:element name="addr_fact_total" minOccurs="1" maxOccurs="1" type="typeAddrTotal" /> и почти в конце схемы его описание <xs:simpleType name="typeAddrTotal"> <xs:restriction base="xs:string"> <xs:minLength value="1" /> <xs:maxLength value="500" /> <xs:pattern value="[a-zA-Zа-яА-ЯЁё0-9\- \.,'\\/№():_+|"#?!;]*" /> </xs:restriction> </xs:simpleType> Видимо это фасеты... Если конечное свойство просто присваиваю ( = "траливали") или СвойствоХДТО.Установить("Траливали"); то свойство просто становится типа строка, при этом метод Проверить() не работает. подскажите, как сделать значение на основе этого "typeAddrTotal" |
|||
1
Бархат
16.05.18
✎
12:07
|
Ребят, как с фасетами из схемы работать?
|
|||
2
Cyberhawk
16.05.18
✎
12:10
|
Объектная модель ХДТО в платформе далеко не все поддерживает, что есть в ХСД-схеме
|
|||
3
HomoAlbus
16.05.18
✎
12:16
|
А ты бахни туда строку длиной 501 символ и проверь работает ли Проверить(). Поидее должен.
Ну и скрин панели свойств твоего свойства с типом typeAddrTotal в студию. |
|||
4
Бархат
16.05.18
✎
12:17
|
а как фасеты дернуть в конфу? Тогда может так с ними можно работать?
|
|||
5
HomoAlbus
16.05.18
✎
12:19
|
Да просто xsd загрузи да и все.
|
|||
6
HomoAlbus
16.05.18
✎
12:21
|
||||
7
Бархат
16.05.18
✎
12:24
|
https://cloud.mail.ru/public/EibM/c8Ru5g5RX - скрин свойств
при загрузке XSD в дереве пакетов XDTO ничего не происходит. всю схему гружу. Ошибок нет, но и новых элементов в дереве тоже. бахнуть строку сейчас попробую типы тоже попробую занести. |
|||
8
Бархат
16.05.18
✎
12:42
|
Бахнуть не получилось, Свойство.Установить("очень длинная строка") выдала Недостаточно факт. параметров
занести типы в свой пакет получилось. Как с ним обращаться теперь? Фасеты есть в конфе. |
|||
9
Apokalipsec
16.05.18
✎
12:43
|
Фасеты срабатывают на уровне валидации в веб-сервисе, то есть на уровне soap.
Базовый тип у тебя строка. Если ты в этой строке будешь передавать исключаемые символы - то получишь отлуп от веб-сервиса на уровне валидации. |
|||
10
Бархат
16.05.18
✎
12:46
|
не, мне просто проверить значение на соответвие. Я просто делаю xml на основе xsd. Это не для веб-сервисов. Мне как то в коде надо проверить значения.
|
|||
11
Apokalipsec
16.05.18
✎
12:48
|
(10) Фасет это обычное регулярное (regexp) выражение, проверяющее условие, проверяй свою строку этим regexp'ом и всё.
|
|||
12
Бархат
16.05.18
✎
12:48
|
типа есть значение, я его проверяю по соотв фасету. проходит - иду к след свойству, валит - кажу пользователю болт
|
|||
13
Бархат
16.05.18
✎
12:49
|
вот сейчас ищу как это сделать в 8.3
|
|||
14
d4rkmesa
16.05.18
✎
13:27
|
(0) Pattern в данном случае - аналог Pattern в RegExp. Фасеты в терминологии 1С XDTO - это скорее перечисления.
|
|||
15
d4rkmesa
16.05.18
✎
13:44
|
(0) А почему бы просто не сделать присваивание через Попытку ... Исключение для проверки? Можно собрать пакет XDTO с этим типом и пустой функцией. Навроде:
http://catalog.mista.ru/public/464971/ |
|||
16
Бархат
16.05.18
✎
13:47
|
ну может быть да, типа того. Только надо как-то вытащить фасет из определения типа. Типов прилично. Тот для примера просто взял. Тоже ту статью глядел тока на инфостарте
http://catalog.mista.ru/public/464971/ |
|||
17
Бархат
16.05.18
✎
13:48
|
||||
18
Бархат
16.05.18
✎
13:49
|
||||
19
Бархат
16.05.18
✎
13:50
|
та ё маё infostart..ru/public//464971/
переименовывается что ли |
|||
20
d4rkmesa
16.05.18
✎
13:52
|
(16) Можно вытащить из пакета. См. в справке:
ВидФасетаXDTO.Образец (XDTOFacetType.Pattern) ВидФасетаXDTO (XDTOFacetType) Образец (Pattern) Описание: Фасет образца. |
|||
21
d4rkmesa
16.05.18
✎
13:52
|
Код для перечисления, скорее всего аналогично для Pattern'а из типа вытаскивается:
Прокси = ПолучитьПрокси(); Тип = Прокси.ФабрикаXDTO.Тип("http://tempuri.org/", "NpoConnection"); Для Каждого Элемент Из Тип.Фасеты Цикл МассивNpo.Добавить(Элемент.Значение); КонецЦикла; |
|||
22
Бархат
16.05.18
✎
19:15
|
Всё проще оказалось.
1. сделал свой пакет в дереве 2. экспортировал его 3. вписал в него все simpletype из моей схемы 4. импортировал в конфу 5. использую : ТестТипа = ФабрикаXDTO.Тип("Мой URI","один из типов в пакете"); тестТипа.Проверить("проверяемое значение"); Дальше раскручу по структурам и проч. Спасибо всем участникам! |
|||
23
Cyberhawk
16.05.18
✎
19:36
|
(22) А теперь без изменения дерева метаданных сделай )
|
|||
24
d4rkmesa
16.05.18
✎
20:33
|
(22) Вполне нормальное решение, если исходный пакет слишком "тяжелый" для этих целей.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |