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

Методы · SetValue

Устанавливает значение по указанному индексу.

Синтаксис

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

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

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

УстановитьЗначение (SetValue)

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

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

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

<Элемент> (обязательный)
Тип: ОбъектXDTO, ЗначениеXDTO, Неопределено.
Элемент данных XDTO.
Описание:

Устанавливает значение по указанному индексу.

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

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

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

Доступен, начиная с версии 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. Удаление по возрастанию индексов изменило бы следующие позиции; сначала удаляется старшая вставка.

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

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

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

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

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