ПоследовательностьXDTO.ПолучитьЗначение

Методы · GetValue

Получает значение (элемент данных) по указанному индексу.

Синтаксис

ПолучитьЗначение(<Индекс>)
Полное описание, параметры и ограничения

ПоследовательностьXDTO.ПолучитьЗначение (XDTOSequence.GetValue)

ПоследовательностьXDTO (XDTOSequence)

ПолучитьЗначение (GetValue)

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

Синтаксис:
ПолучитьЗначение(<Индекс>)
Параметры:

<Индекс> (необязательный)
Тип: Число.
Индекс элемента последовательности.
Возвращаемое значение:
Тип: ЗначениеXDTO, ОбъектXDTO, Неопределено.
Если не найдено, возвращается Неопределено.
Описание:

Получает значение (элемент данных) по указанному индексу.

Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Если по указанному индексу записан текст, будет инициировано исключение.
Использование в версии:

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

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

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

Сохранить порядок текста и числовой суммы в смешанном XML

mixed=true позволяет чередовать текст с элементами amount. Последовательность — не список только чисел и не обычная ТаблицаЗначений.

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

Полный серверный общий модуль собственной учебной конфигурации.

Подготовка

  1. В собственной отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеКоллекцииXDTO с флагом Сервер. Вставьте полный код выбранного урока.

  2. Из серверной команды собственной учебной обработки вызовите УчебныеКоллекцииXDTO.ВыполнитьПример(). Метаданные справочников и документы не нужны.

  3. В код встроена маленькая собственная XSD: Order содержит повторяющиеся строки item, Note — смешанный текст с числовыми элементами amount. Не подменяйте схему или XML данными неизвестного сервиса.

  4. URI urn:guide:collections — идентификатор пространства имён, не адрес сервера. Схема не содержит import/include, DTD или внешних ссылок.

  5. Все объекты и XML создаются в памяти. Нет файлов, сети, выполнения внешнего кода, записи базы или изменений пакетов XDTO конфигурации.

Процедура ВыполнитьПример() Экспорт
    XSD = "<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:g=""urn:guide:collections"" targetNamespace=""urn:guide:collections"" elementFormDefault=""qualified"">
    |<xs:complexType name=""Order""><xs:sequence><xs:element name=""item"" type=""xs:string"" minOccurs=""0"" maxOccurs=""unbounded""/></xs:sequence></xs:complexType>
    |<xs:complexType name=""Note"" mixed=""true""><xs:sequence><xs:element name=""amount"" type=""xs:decimal"" minOccurs=""0"" maxOccurs=""unbounded""/></xs:sequence></xs:complexType>
    |<xs:element name=""order"" type=""g:Order""/><xs:element name=""note"" type=""g:Note""/>
    |</xs:schema>";
    ЧтениеСхемы = Новый ЧтениеXML;
    ЧтениеСхемы.УстановитьСтроку(XSD);
    Попытка
        Дерево = Новый ПостроительDOM;
        ДокументСхемы = Дерево.Прочитать(ЧтениеСхемы);
    Исключение
        ОшибкаСхемы = ОписаниеОшибки();
        Попытка
            ЧтениеСхемы.Закрыть();
        Исключение
            ВызватьИсключение ОшибкаСхемы + Символы.ПС + "Закрытие: " + ОписаниеОшибки();
        КонецПопытки;
        ВызватьИсключение ОшибкаСхемы;
    КонецПопытки;
    ЧтениеСхемы.Закрыть();
    ПостроительСхем = Новый ПостроительСхемXML;
    Схема = ПостроительСхем.СоздатьСхемуXML(ДокументСхемы.ЭлементДокумента);
    Если Схема = Неопределено Тогда
        ВызватьИсключение "Не построена собственная схема коллекций";
    КонецЕсли;
    НаборСхем = Новый НаборСхемXML;
    НаборСхем.Добавить(Схема);
    Если НЕ НаборСхем.Проверить() Тогда
        ВызватьИсключение "Собственная схема не прошла проверку";
    КонецЕсли;
    Фабрика = Новый ФабрикаXDTO(НаборСхем);
    ТипПояснения = Фабрика.Тип("urn:guide:collections", "Note");
    Если ТипПояснения = Неопределено Тогда
        ВызватьИсключение "В собственной фабрике не найден Note";
    КонецЕсли;
    Пояснение = Фабрика.Создать(ТипПояснения);
    СвойствоСуммы = Пояснение.Свойства().Получить("amount");
    Если СвойствоСуммы = Неопределено Тогда
        ВызватьИсключение "Не найдено собственное числовое свойство amount";
    КонецЕсли;
    Порядок = Пояснение.Последовательность();
    Порядок.Добавить("Книга: ");
    Порядок.Добавить(СвойствоСуммы, Фабрика.Создать(СвойствоСуммы.Тип, "750"));
    Порядок.Добавить(" условных единиц.");
    Пояснение.Проверить();
    Сообщить(Порядок.Владелец = Пояснение);
    Сообщить(Порядок.Количество() = 3);
    Сообщить(Порядок.ПолучитьТекст(0) = "Книга: ");
    Сообщить(Порядок.ПолучитьСвойство(0) = Неопределено);
    Сообщить(Порядок.ПолучитьСвойство(1) = СвойствоСуммы);
    Сообщить(Порядок.ПолучитьЗначениеXDTO(1).Значение = 750);
    Полученное = Порядок.ПолучитьЗначение(1);
    Сообщить("Тип ПолучитьЗначение: " + Строка(ТипЗнч(Полученное)));
    Сообщить(УчебноеПростоеЗначение(Полученное) = 750);
    Сообщить(Порядок.ПолучитьТекст(2) = " условных единиц.");
КонецПроцедуры

Функция УчебноеПростоеЗначение(Элемент)
    Если ТипЗнч(Элемент) = Тип("ЗначениеXDTO") Тогда
        Возврат Элемент.Значение;
    КонецЕсли;
    Возврат Элемент;
КонецФункции

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

  1. Построить Note со смешанным содержимым. Получить его собственную Последовательность без конструктора.

  2. Добавить текст Книга:, типизированный decimal 750 с описателем amount, затем конечный текст.

  3. Текстовая позиция не связана со свойством amount; получить её текст и проверить отсутствие описателя.

  4. Для числовой позиции прочитать свойство, XDTO-значение и его простое Значение. Дополнительно вывести фактический тип результата ПолучитьЗначение.

  5. Учебная функция извлекает простое значение из обёртки, если оно пришло как ЗначениеXDTO. Она не преобразует произвольный внешний XML.

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

  1. Восемь булевых проверок Истина. Последовательность: текст, число 750, текст.

  2. Владельцем является своё Пояснение. Число не превращается в бизнес-ссылку или запись базы.

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

Показано происхождение и содержимое настоящей смешанной последовательности.

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

  1. Без mixed=true произвольные текстовые части не соответствуют этой модели.

  2. Количество последовательности считает текстовые и элементные части, не товары и не сумму.

  3. Индекс 1 относится к текущему порядку частей. После вставки используйте пересчитанные позиции.

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

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

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

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

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