Допускается использование любого пространства имен, кроме указанного.
Полное описание, параметры и ограничения
КатегорияОграниченияПространствИменXS.Кроме (XSNamespaceConstraintCategory.Not)
КатегорияОграниченияПространствИменXS (XSNamespaceConstraintCategory)
Кроме (Not)
Доступен, начиная с версии 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:complexType name=""Book""><xs:sequence><xs:any namespace=""##other"" processContents=""lax"" minOccurs=""0""/></xs:sequence></xs:complexType></xs:schema>");
Компонента = НайтиУчебнуюКомпоненту(Схема, ТипКомпонентыXS.Маска);
Сообщить("Фактический вариант: " + Строка(Компонента.КатегорияОграниченияПространствИмен));
Сообщить("Выбранный вариант: " + Строка(Компонента.КатегорияОграниченияПространствИмен = КатегорияОграниченияПространствИменXS.Кроме));
Копия = Компонента.КлонироватьКомпоненту(Истина);
Копия.ОбновитьЭлементDOM();
Сообщить("XML-тег своей копии: " + Копия.ЭлементDOM.ИмяЭлемента);Тот же серверный модуль: построение своей модели XSD из собственной строки
Функция ПрочитатьУчебнуюСхему(ТекстXSD)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXSD);
Попытка
Дерево = Новый ПостроительDOM;
Документ = Дерево.Прочитать(Чтение);
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Построитель = Новый ПостроительСхемXML;
Схема = Построитель.СоздатьСхемуXML(Документ.ЭлементДокумента);
Если Схема = Неопределено Тогда
ВызватьИсключение "Не построена собственная схема";
КонецЕсли;
Возврат Схема;
КонецФункцииТот же модуль: обход реально принадлежащих схеме компонентов
Функция НайтиУчебнуюКомпоненту(Компонента, ИскомыйВид)
Если Компонента.ТипКомпоненты = ИскомыйВид Тогда
Возврат Компонента;
КонецЕсли;
Для Каждого Дочерняя Из Компонента.Компоненты Цикл
Найденная = НайтиУчебнуюКомпоненту(Дочерняя, ИскомыйВид);
Если Найденная <> Неопределено Тогда
Возврат Найденная;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункцииРазбор по шагам
Собственная XSD заранее задаёт вариант группы, атрибута, маски, наследования, простого типа или политики.
Для объединений политики вызывается Значения, возвращающий массив значений перечисления. Такой объект нельзя сравнивать с одиночной константой как с обычным scalar-свойством.
Чтение конкретного свойства не меняет модель; отдельная глубокая копия обновляет свой DOM, исходная компонента не заменяется.
Как проверить результат
Выведены фактический вариант / элементы политики, сравнение с конкретной константой и XML-тег отдельной копии.
Для Все / #all нормализация модели может вернуть составные признаки вместо буквального элемента Все. Смотрите весь массив; пример не обещает обязательное Истина для каждого представления объединения.
Ожидаемый результат
Конкретный вариант перечисления сопоставлен с настоящим компонентом собственной модели XSD.
На что обратить внимание
ЗапрещенныеПодстановки / ИсключенияГруппПодстановки могут вычисляться моделью по контексту, не всегда совпадая один к одному с написанным XML-атрибутом.
Не добавляйте элементы в объединение несуществующими методами Содержит / Добавить: здесь значения реально получены через Значения().
Клон отдельного компонента не является автоматически законченной новой схемой. Проверка экземпляра XML и запись в базу не выполняются.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.