СписокXDTO.Установить

Методы · Set

Устанавливает элемент данных XDTO в список по указанному индексу.

Синтаксис

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

СписокXDTO.Установить (XDTOList.Set)

СписокXDTO (XDTOList)

Установить (Set)

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

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

<Индекс> (обязательный)
Тип: Число.
Позиция, в которую необходимо установить элемент данных.

<Элемент> (обязательный)
Тип: ЗначениеXDTO, ОбъектXDTO.
Элемент данных XDTO, устанавливаемый в указанную позицию списка.
Возвращаемое значение:
Тип: ЗначениеXDTO, ОбъектXDTO.
Установленный элемент данных.
Описание:

Устанавливает элемент данных XDTO в список по указанному индексу.

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

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

Использование в версии:

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

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

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

Заменить товар, получить удалённый элемент и очистить собственный список

Установить заменяет выбранную позицию, Удалить возвращает удалённый элемент. Очистить не уничтожает схему или родительский объект.

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

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

Подготовка

  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", "Order");
    Если ТипЗаказа = Неопределено Тогда
        ВызватьИсключение "В собственной фабрике не найден Order";
    КонецЕсли;
    Заказ = Фабрика.Создать(ТипЗаказа);
    СвойствоТоваров = Заказ.Свойства().Получить("item");
    Если СвойствоТоваров = Неопределено Тогда
        ВызватьИсключение "Не найдено собственное повторяющееся свойство item";
    КонецЕсли;
    Товары = Заказ.ПолучитьСписок(СвойствоТоваров);
    Если Товары = Неопределено Тогда
        ВызватьИсключение "Не получен список собственного заказа";
    КонецЕсли;
    Товары.Добавить(Фабрика.Создать(СвойствоТоваров.Тип, "Книга"));
    Товары.Добавить(Фабрика.Создать(СвойствоТоваров.Тип, "Ручка"));
    Установленный = Товары.Установить(0, Фабрика.Создать(СвойствоТоваров.Тип, "Книга — образец"));
    Сообщить(Установленный.Значение = "Книга — образец");
    Сообщить(Товары.Количество() = 2);
    Сообщить(Товары.Получить(0) = "Книга — образец");
    Удалённый = Товары.Удалить(1);
    Сообщить(Удалённый.Значение = "Ручка");
    Сообщить(Товары.Количество() = 1);
    Товары.Очистить();
    Сообщить(Товары.Количество() = 0);
    Сообщить(Товары.Владелец = Заказ);
    Заказ.Проверить();
    Сообщить("Пустой заказ допустим, потому что minOccurs у item равен 0");
КонецПроцедуры

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

  1. Создать два типизированных значения собственного списка: Книга и Ручка.

  2. Заменить позицию 0 новым значением. Метод Установить возвращает установленный элемент, не прежнюю Книгу.

  3. Удалить по индексу 1 и прочитать реально возвращённую Ручку. Удалить принимает индекс, а не произвольную объектную ссылку.

  4. Очистить только собственный список. Владельческий объект остаётся, проверка модели разрешает пустоту благодаря minOccurs=0.

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

  1. Семь булевых сообщений Истина. После очистки список пуст, владелец по-прежнему Заказ.

  2. Изменение minOccurs на 1 означает другую схему: пустой объект уже нельзя считать допустимым.

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

На конкретных товарах разобраны три разные операции и их возвращаемые значения.

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

  1. Установить не вставляет новую строку и не увеличивает количество.

  2. Удалённый элемент больше не принадлежит текущему списку; не используйте его индекс как актуальную позицию.

  3. Очистка этой модели не очищает информационную базу или пакеты XDTO конфигурации.

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

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

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

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

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