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

Методы · GetText

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

Синтаксис

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

ПоследовательностьXDTO.ПолучитьТекст (XDTOSequence.GetText)

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

ПолучитьТекст (GetText)

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

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

<Индекс> (необязательный)
Тип: Число.
Индекс в последовательности.
Возвращаемое значение:
Тип: Строка.

Описание:

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

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

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

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

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

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

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

Вставить две временные части, изменить сумму и удалить вставки

Один вариант Вставить принимает текст, другой — свойство и XDTO-элемент. После опыта временные части удаляются, остаётся понятное пояснение суммы 1000.

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

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

Подготовка

  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"));
    Порядок.Добавить(" условных единиц.");
    Порядок.Вставить(1, "временная проверка ");
    Порядок.Вставить(2, СвойствоСуммы, Фабрика.Создать(СвойствоСуммы.Тип, "-50"));
    Сообщить(Порядок.Количество() = 5);
    Сообщить(Порядок.ПолучитьТекст(1) = "временная проверка ");
    Сообщить(Порядок.ПолучитьЗначениеXDTO(2).Значение = -50);
    Порядок.УстановитьЗначение(3, Фабрика.Создать(СвойствоСуммы.Тип, "1000"));
    Сообщить(Порядок.ПолучитьЗначениеXDTO(3).Значение = 1000);
    Порядок.Удалить(2);
    Порядок.Удалить(1);
    Сообщить(Порядок.Количество() = 3);
    Сообщить(Порядок.ПолучитьЗначениеXDTO(1).Значение = 1000);
    Сообщить(Порядок.ПолучитьТекст(0) = "Книга: ");
    Сообщить(Порядок.ПолучитьТекст(2) = " условных единиц.");
    Пояснение.Проверить();
    Порядок.Очистить();
    Сообщить(Порядок.Количество() = 0);
    Сообщить(Порядок.Владелец = Пояснение);
    Пояснение.Проверить();
КонецПроцедуры

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

  1. Начать с трёх собственных частей: Книга:, amount 750, конечный текст.

  2. Вставить временный текст по индексу 1, временный amount −50 по индексу 2. После двух вставок исходная сумма находится в позиции 3.

  3. УстановитьЗначение меняет типизированный элемент в позиции 3 на decimal 1000. Это не сложение с −50: итог изменяется явно.

  4. Удалить вставки в порядке 2, затем 1, чтобы не потерять нужные позиции. Проверить восстановление трёх частей с суммой 1000.

  5. Очистить только собственную последовательность и проверить модель. Пустота разрешена minOccurs=0 и отсутствием обязательных других полей.

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

  1. Десять булевых проверок Истина. Перед очисткой порядок: Книга:, amount 1000, конечный текст.

  2. После очистки частей нет, но своё Пояснение и схема продолжают существовать.

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

Все изменяющие методы последовательности разобраны на одном полностью подготовленном объекте.

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

  1. Вставка текстовой части и вставка типизированного элемента имеют разное число аргументов.

  2. Текст не является значением decimal. Для УстановитьЗначение передаётся XDTO-элемент соответствующего свойства.

  3. Удаление по возрастанию индексов изменило бы следующие позиции; сначала удаляется старшая вставка.

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

Сохранить порядок текста и числовой суммы в смешанном 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С» и не аффилирован с ней.