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


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

сделать значение на основе SimpleType в xsd схеме, подскажите как

сделать значение на основе SimpleType в xsd схеме, подскажите как
Я
   Бархат
 
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\- \.,'\\/№():_+|&quot;#?!;]*" />
      </xs:restriction>
   </xs:simpleType>

Видимо это фасеты...


Если конечное свойство просто присваиваю ( = "траливали")
или СвойствоХДТО.Установить("Траливали");
то свойство просто становится типа строка, при этом метод Проверить() не работает.

подскажите, как сделать значение на основе этого "typeAddrTotal"
 
 
   Бархат
 
1 - 16.05.18 - 12:07
Ребят, как с фасетами из схемы работать?
   Cyberhawk
 
2 - 16.05.18 - 12:10
Объектная модель ХДТО в платформе далеко не все поддерживает, что есть в ХСД-схеме
   HomoAlbus
 
3 - 16.05.18 - 12:16
А ты бахни туда строку длиной 501 символ и проверь работает ли Проверить(). Поидее должен.

Ну и скрин панели свойств твоего свойства с типом typeAddrTotal в студию.
   Бархат
 
4 - 16.05.18 - 12:17
а как фасеты дернуть в конфу? Тогда может так с ними можно работать?
   HomoAlbus
 
5 - 16.05.18 - 12:19
Да просто xsd загрузи да и все.
   HomoAlbus
 
6 - 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
Бахнуть не получилось, Свойство.Установить("очень длинная строка") выдала Недостаточно факт. параметров

занести типы в свой пакет получилось. Как с ним обращаться теперь? Фасеты есть в конфе.
   Apokalipsec
 
9 - 16.05.18 - 12:43
Фасеты срабатывают на уровне валидации в веб-сервисе, то есть на уровне soap.
Базовый тип у тебя строка.
Если ты в этой строке будешь передавать исключаемые символы - то получишь отлуп от веб-сервиса на уровне валидации.
   Бархат
 
10 - 16.05.18 - 12:46
не, мне просто проверить значение на соответвие. Я просто делаю xml на основе xsd. Это не для веб-сервисов. Мне как то в коде надо проверить значения.
 
 Рекламное место пустует
   Apokalipsec
 
11 - 16.05.18 - 12:48
(10) Фасет это обычное регулярное (regexp) выражение, проверяющее условие, проверяй свою строку этим regexp'ом и всё.
   Бархат
 
12 - 16.05.18 - 12:48
типа есть значение, я его проверяю по соотв фасету. проходит - иду к след свойству, валит - кажу пользователю болт
   Бархат
 
13 - 16.05.18 - 12:49
вот сейчас ищу как это сделать в 8.3
   d4rkmesa
 
14 - 16.05.18 - 13:27
(0) Pattern в данном случае - аналог Pattern в RegExp. Фасеты в терминологии 1С XDTO - это скорее перечисления.
   d4rkmesa
 
15 - 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/publi//464971/


переименовывается что ли
   d4rkmesa
 
20 - 16.05.18 - 13:52
(16) Можно вытащить из пакета. См. в справке:

ВидФасетаXDTO.Образец (XDTOFacetType.Pattern)
ВидФасетаXDTO (XDTOFacetType)
Образец (Pattern)
Описание:

Фасет образца.
   d4rkmesa
 
21 - 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","один из типов в пакете");
тестТипа.Проверить("проверяемое значение");

Дальше раскручу по структурам и проч.

Спасибо всем участникам!
   Cyberhawk
 
23 - 16.05.18 - 19:36
(22) А теперь без изменения дерева метаданных сделай )
   d4rkmesa
 
24 - 16.05.18 - 20:33
(22) Вполне нормальное решение, если исходный пакет слишком "тяжелый" для этих целей.


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