Расширение.
Полное описание, параметры и ограничения
ИсключенияГруппПодстановкиXS.Расширение (XSSubstitutionGroupExclusions.Extension)
ИсключенияГруппПодстановкиXS (XSSubstitutionGroupExclusions)
Расширение (Extension)
Доступен, начиная с версии 8.1.
Описание:
Расширение.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Разобрать ИсключенияГруппПодстановкиXS.Расширение в собственной XSD
В собственной строке XSD задан конкретный вариант Расширение. Читается настоящий компонент построенной модели, затем создаётся отдельная глубокая копия и обновляется её DOM-представление.
Где и как запускать
Серверный общий модуль своей учебной базы. Редкий API: разбор конкретной своей XSD и её политики / вариантов модели.
Подготовка
В своей учебной базе создайте серверный общий модуль УчебныеПолитикиXSD: Сервер = Истина, Глобальный = Ложь. Дополнительные функции разместите на уровне модуля, основной код — в теле Процедура ВыполнитьПример() Экспорт.
Вызовите УчебныеПолитикиXSD.ВыполнитьПример() из серверной команды своей обработки. Каждый пример запускайте отдельно: XSD содержит свою вымышленную книгу, не документ рабочей конфигурации.
Схема строится из включённой строки. Никаких HTTP-загрузок, внешних XSD, DTD, файлов и записей 1С здесь нет. Namespace urn:learn:book-schema не является сетевым адресом.
Форма представления локального элемента и элемент верхнего уровня — разные случаи. Ограничения key / unique / keyref относятся к XML, не к справочникам или ссылкам базы 1С.
Схема = ПрочитатьУчебнуюСхему("<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:g=""urn:learn:book-schema"" targetNamespace=""urn:learn:book-schema"" elementFormDefault=""qualified""><xs:element name=""book"" type=""xs:string"" final=""extension""/></xs:schema>");
Компонента = Схема.ОбъявленияЭлементов.Получить("book", "urn:learn:book-schema");
ЗначенияПолитики = Компонента.ИсключенияГруппПодстановки.Значения();
Для Каждого ЗначениеПолитики Из ЗначенияПолитики Цикл
Сообщить("Признак политики: " + Строка(ЗначениеПолитики));
КонецЦикла;
Сообщить("Найден конкретный признак: " + Строка(ЗначенияПолитики.Найти(ИсключенияГруппПодстановкиXS.Расширение) <> Неопределено));
Копия = Компонента.КлонироватьКомпоненту(Истина);
Копия.ОбновитьЭлементDOM();
Сообщить("XML-тег своей копии: " + Копия.ЭлементDOM.ИмяЭлемента);Тот же серверный модуль: построение своей модели XSD из собственной строки
Функция ПрочитатьУчебнуюСхему(ТекстXSD)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXSD);
Попытка
Дерево = Новый ПостроительDOM;
Документ = Дерево.Прочитать(Чтение);
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Построитель = Новый ПостроительСхемXML;
Схема = Построитель.СоздатьСхемуXML(Документ.ЭлементДокумента);
Если Схема = Неопределено Тогда
ВызватьИсключение "Не построена собственная схема";
КонецЕсли;
Возврат Схема;
КонецФункцииРазбор по шагам
Собственная XSD заранее задаёт вариант группы, атрибута, маски, наследования, простого типа или политики.
Для объединений политики вызывается Значения, возвращающий массив значений перечисления. Такой объект нельзя сравнивать с одиночной константой как с обычным scalar-свойством.
Чтение конкретного свойства не меняет модель; отдельная глубокая копия обновляет свой DOM, исходная компонента не заменяется.
Как проверить результат
Выведены фактический вариант / элементы политики, сравнение с конкретной константой и XML-тег отдельной копии.
Для Все / #all нормализация модели может вернуть составные признаки вместо буквального элемента Все. Смотрите весь массив; пример не обещает обязательное Истина для каждого представления объединения.
Ожидаемый результат
Конкретный вариант перечисления сопоставлен с настоящим компонентом собственной модели XSD.
На что обратить внимание
ЗапрещенныеПодстановки / ИсключенияГруппПодстановки могут вычисляться моделью по контексту, не всегда совпадая один к одному с написанным XML-атрибутом.
Не добавляйте элементы в объединение несуществующими методами Содержит / Добавить: здесь значения реально получены через Значения().
Клон отдельного компонента не является автоматически законченной новой схемой. Проверка экземпляра XML и запись в базу не выполняются.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.