ТипКомпонентыXS.ФасетОбщегоКоличестваРазрядов

Свойства · TotalDigitsFacet

Фасет общего количества цифр.

Полное описание, параметры и ограничения

ТипКомпонентыXS.ФасетОбщегоКоличестваРазрядов (XSComponentType.TotalDigitsFacet)

ТипКомпонентыXS (XSComponentType)

ФасетОбщегоКоличестваРазрядов (TotalDigitsFacet)

Доступен, начиная с версии 8.1.

Описание:
Фасет общего количества цифр.
Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Разобрать ТипКомпонентыXS.ФасетОбщегоКоличестваРазрядов собственной схемы

Собственная XSD содержит конкретный ФасетОбщегоКоличестваРазрядов. По его ТипКомпоненты выбирается настоящий узел дерева модели; создаётся отдельная глубокая копия и показывается её XML-тег.

Где и как запускать

Серверный общий модуль собственной учебной базы. Редкий API: разбор своей XSD / короткий пример синтаксиса директив.

Подготовка

  1. Серверный общий модуль УчебныеСхемы в собственной учебной базе: Сервер = Истина, Глобальный = Ложь. Разместите дополнительные функции на уровне модуля, а основной код — в тело Процедура ВыполнитьПример() Экспорт.

  2. Вызовите УчебныеСхемы.ВыполнитьПример() из серверной команды своей учебной обработки. Каждый урок выполняйте отдельно: XSD целиком включена строкой и относится к вымышленной книге.

  3. Схема строится из собственной строки XML через DOM. Здесь нет DTD, чтения файла, загрузки XSD по URL и обращения к внешнему серверу. URI urn:learn:book-schema — имя пространства, не сетевой адрес.

  4. Это пример разбора / работы с моделью 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(Документ.ЭлементДокумента);
    Если Схема = Неопределено Тогда
        ВызватьИсключение "Не построена собственная схема";
    КонецЕсли;
    Возврат Схема;
КонецФункции
Тот же модуль: обход реально принадлежащих схеме компонентов
Функция НайтиУчебнуюКомпоненту(Компонента, ИскомыйВид)
    Если Компонента.ТипКомпоненты = ИскомыйВид Тогда
        Возврат Компонента;
    КонецЕсли;
    Для Каждого Дочерняя Из Компонента.Компоненты Цикл
        Найденная = НайтиУчебнуюКомпоненту(Дочерняя, ИскомыйВид);
        Если Найденная <> Неопределено Тогда
            Возврат Найденная;
        КонецЕсли;
    КонецЦикла;
    Возврат Неопределено;
КонецФункции

Разбор по шагам

  1. Из собственной строки XSD строится DOM и настоящая модель СхемаXML.

  2. ТипКомпоненты — типизированное перечисление. Обход идёт по Компоненты, то есть дочерним принадлежащим компонентам, не по обратным ссылкам Контейнер / Схема.

  3. Работа выполняется с собственным деревом и копией либо с явно созданной собственной директивой. Никакой неизвестный объект извне не требуется.

Как проверить результат

  1. В собственной схеме найдена выбранная компонента и выведен тег её копии. Исходная компонента не заменяется и не изменяется.

  2. Схема, группа модели, фрагмент и объявление элемента — разные уровни модели XSD, хотя исходный XML может содержать их вложенными в одном участке.

Ожидаемый результат

Выбранный вид компоненты использован при разборе конкретной собственной XSD.

На что обратить внимание

  1. Не путайте XS-компоненту схемы с узлом DOM или объектом XDTO данных: это разные модели.

  2. Компоненты отражает владение; нельзя рекурсивно идти по Контейнер и Схема без защиты от циклов.

  3. Для директив используются собственные схемы в памяти. Этот короткий пример не загружает файлы и не утверждает, что проверен экземпляр XML.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.