Фасет общего количества цифр.
Полное описание, параметры и ограничения
ТипКомпонентыXS.ФасетОбщегоКоличестваРазрядов (XSComponentType.TotalDigitsFacet)
ТипКомпонентыXS (XSComponentType)
ФасетОбщегоКоличестваРазрядов (TotalDigitsFacet)
Доступен, начиная с версии 8.1.
Описание:
Фасет общего количества цифр.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Разобрать ТипКомпонентыXS.ФасетОбщегоКоличестваРазрядов собственной схемы
Собственная XSD содержит конкретный ФасетОбщегоКоличестваРазрядов. По его ТипКомпоненты выбирается настоящий узел дерева модели; создаётся отдельная глубокая копия и показывается её XML-тег.
Где и как запускать
Серверный общий модуль собственной учебной базы. Редкий API: разбор своей XSD / короткий пример синтаксиса директив.
Подготовка
Серверный общий модуль УчебныеСхемы в собственной учебной базе: Сервер = Истина, Глобальный = Ложь. Разместите дополнительные функции на уровне модуля, а основной код — в тело Процедура ВыполнитьПример() Экспорт.
Вызовите УчебныеСхемы.ВыполнитьПример() из серверной команды своей учебной обработки. Каждый урок выполняйте отдельно: XSD целиком включена строкой и относится к вымышленной книге.
Схема строится из собственной строки XML через DOM. Здесь нет DTD, чтения файла, загрузки XSD по URL и обращения к внешнему серверу. URI urn:learn:book-schema — имя пространства, не сетевой адрес.
Это пример разбора / работы с моделью XSD. Он не является проверкой XML документа продажи или созданием метаданных 1С. Браузер справочника BSL не исполняет.
Схема = ПрочитатьУчебнуюСхему("<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:g=""urn:learn:book-schema"" targetNamespace=""urn:learn:book-schema"" elementFormDefault=""qualified""><xs:simpleType name=""BookValue""><xs:restriction base=""xs:decimal""><xs:totalDigits value=""6""/></xs:restriction></xs:simpleType></xs:schema>");
Компонента = НайтиУчебнуюКомпоненту(Схема, ТипКомпонентыXS.ФасетОбщегоКоличестваРазрядов);
Если Компонента = Неопределено Тогда
ВызватьИсключение "В своей схеме не найдена ожидаемая компонента";
КонецЕсли;
Копия = Компонента.КлонироватьКомпоненту(Истина);
Копия.ОбновитьЭлементDOM();
Сообщить("Компонента собственной схемы: " + Копия.ЭлементDOM.ИмяЭлемента);Тот же серверный общий модуль: построение собственной схемы из строки
Функция ПрочитатьУчебнуюСхему(ТекстXSD)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXSD);
Попытка
Дерево = Новый ПостроительDOM;
Документ = Дерево.Прочитать(Чтение);
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Построитель = Новый ПостроительСхемXML;
Схема = Построитель.СоздатьСхемуXML(Документ.ЭлементДокумента);
Если Схема = Неопределено Тогда
ВызватьИсключение "Не построена собственная схема";
КонецЕсли;
Возврат Схема;
КонецФункцииТот же модуль: обход реально принадлежащих схеме компонентов
Функция НайтиУчебнуюКомпоненту(Компонента, ИскомыйВид)
Если Компонента.ТипКомпоненты = ИскомыйВид Тогда
Возврат Компонента;
КонецЕсли;
Для Каждого Дочерняя Из Компонента.Компоненты Цикл
Найденная = НайтиУчебнуюКомпоненту(Дочерняя, ИскомыйВид);
Если Найденная <> Неопределено Тогда
Возврат Найденная;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункцииРазбор по шагам
Из собственной строки XSD строится DOM и настоящая модель СхемаXML.
ТипКомпоненты — типизированное перечисление. Обход идёт по Компоненты, то есть дочерним принадлежащим компонентам, не по обратным ссылкам Контейнер / Схема.
Работа выполняется с собственным деревом и копией либо с явно созданной собственной директивой. Никакой неизвестный объект извне не требуется.
Как проверить результат
В собственной схеме найдена выбранная компонента и выведен тег её копии. Исходная компонента не заменяется и не изменяется.
Схема, группа модели, фрагмент и объявление элемента — разные уровни модели XSD, хотя исходный XML может содержать их вложенными в одном участке.
Ожидаемый результат
Выбранный вид компоненты использован при разборе конкретной собственной XSD.
На что обратить внимание
Не путайте XS-компоненту схемы с узлом DOM или объектом XDTO данных: это разные модели.
Компоненты отражает владение; нельзя рекурсивно идти по Контейнер и Схема без защиты от циклов.
Для директив используются собственные схемы в памяти. Этот короткий пример не загружает файлы и не утверждает, что проверен экземпляр XML.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.