Очищает последовательность.
Синтаксис
Очистить()Полное описание, параметры и ограничения
ПоследовательностьXDTO.Очистить (XDTOSequence.Clear)
ПоследовательностьXDTO (XDTOSequence)
Очистить (Clear)
Доступен, начиная с версии 8.1.
Синтаксис:
Очистить()
Описание:
Очищает последовательность.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Вставить две временные части, изменить сумму и удалить вставки
Один вариант Вставить принимает текст, другой — свойство и XDTO-элемент. После опыта временные части удаляются, остаётся понятное пояснение суммы 1000.
Где и как запускать
Полный серверный общий модуль собственной учебной конфигурации.
Подготовка
В собственной отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеКоллекцииXDTO с флагом Сервер. Вставьте полный код выбранного урока.
Из серверной команды собственной учебной обработки вызовите УчебныеКоллекцииXDTO.ВыполнитьПример(). Метаданные справочников и документы не нужны.
В код встроена маленькая собственная XSD: Order содержит повторяющиеся строки item, Note — смешанный текст с числовыми элементами amount. Не подменяйте схему или XML данными неизвестного сервиса.
URI urn:guide:collections — идентификатор пространства имён, не адрес сервера. Схема не содержит import/include, DTD или внешних ссылок.
Все объекты и 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);
Сообщить(Порядок.Владелец = Пояснение);
Пояснение.Проверить();
КонецПроцедурыРазбор по шагам
Начать с трёх собственных частей: Книга:, amount 750, конечный текст.
Вставить временный текст по индексу 1, временный amount −50 по индексу 2. После двух вставок исходная сумма находится в позиции 3.
УстановитьЗначение меняет типизированный элемент в позиции 3 на decimal 1000. Это не сложение с −50: итог изменяется явно.
Удалить вставки в порядке 2, затем 1, чтобы не потерять нужные позиции. Проверить восстановление трёх частей с суммой 1000.
Очистить только собственную последовательность и проверить модель. Пустота разрешена minOccurs=0 и отсутствием обязательных других полей.
Как проверить результат
Десять булевых проверок Истина. Перед очисткой порядок: Книга:, amount 1000, конечный текст.
После очистки частей нет, но своё Пояснение и схема продолжают существовать.
Ожидаемый результат
Все изменяющие методы последовательности разобраны на одном полностью подготовленном объекте.
На что обратить внимание
Вставка текстовой части и вставка типизированного элемента имеют разное число аргументов.
Текст не является значением decimal. Для УстановитьЗначение передаётся XDTO-элемент соответствующего свойства.
Удаление по возрастанию индексов изменило бы следующие позиции; сначала удаляется старшая вставка.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Записать оба учебных объекта в XML и проверить независимые копии
Список товаров и смешанное пояснение проходят запись/чтение по собственной фабрике. Проверяются значения и порядок, не случайный XML-префикс.
Где и как запускать
Полный серверный общий модуль собственной учебной конфигурации.
Подготовка
В собственной отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеКоллекцииXDTO с флагом Сервер. Вставьте полный код выбранного урока.
Из серверной команды собственной учебной обработки вызовите УчебныеКоллекцииXDTO.ВыполнитьПример(). Метаданные справочников и документы не нужны.
В код встроена маленькая собственная XSD: Order содержит повторяющиеся строки item, Note — смешанный текст с числовыми элементами amount. Не подменяйте схему или XML данными неизвестного сервиса.
URI urn:guide:collections — идентификатор пространства имён, не адрес сервера. Схема не содержит import/include, DTD или внешних ссылок.
Все объекты и 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";
КонецЕсли;
Товары = Заказ.ПолучитьСписок(СвойствоТоваров);
Если Товары = Неопределено Тогда
ВызватьИсключение "Не получен список собственного заказа";
КонецЕсли;
Товары.Добавить(Фабрика.Создать(СвойствоТоваров.Тип, "Книга"));
Товары.Добавить(Фабрика.Создать(СвойствоТоваров.Тип, "Ручка"));
Заказ.Проверить();
ТипПояснения = Фабрика.Тип("urn:guide:collections", "Note");
Если ТипПояснения = Неопределено Тогда
ВызватьИсключение "В собственной фабрике не найден Note";
КонецЕсли;
Пояснение = Фабрика.Создать(ТипПояснения);
СвойствоСуммы = Пояснение.Свойства().Получить("amount");
Если СвойствоСуммы = Неопределено Тогда
ВызватьИсключение "Не найдено собственное числовое свойство amount";
КонецЕсли;
Порядок = Пояснение.Последовательность();
Порядок.Добавить("Книга: ");
Порядок.Добавить(СвойствоСуммы, Фабрика.Создать(СвойствоСуммы.Тип, "750"));
Порядок.Добавить(" условных единиц.");
Пояснение.Проверить();
КопияЗаказа = СоздатьСвоюXMLКопию(Фабрика, Заказ, "order", ТипЗаказа);
КопияПояснения = СоздатьСвоюXMLКопию(Фабрика, Пояснение, "note", ТипПояснения);
КопияТоваров = КопияЗаказа.ПолучитьСписок("item");
КопияПорядка = КопияПояснения.Последовательность();
Сообщить(КопияТоваров.Количество() = 2);
Сообщить(КопияТоваров.Получить(0) = "Книга");
Сообщить(КопияТоваров.Получить(1) = "Ручка");
Сообщить(КопияПорядка.Количество() = 3);
Сообщить(КопияПорядка.ПолучитьТекст(0) = "Книга: ");
Сообщить(КопияПорядка.ПолучитьЗначениеXDTO(1).Значение = 750);
Сообщить(КопияПорядка.ПолучитьТекст(2) = " условных единиц.");
Товары.Очистить();
Сообщить(КопияТоваров.Количество() = 2);
Порядок.Очистить();
Сообщить(КопияПорядка.Количество() = 3);
КонецПроцедуры
Функция СоздатьСвоюXMLКопию(Фабрика, Объект, ИмяКорня, ОжидаемыйТип)
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Фабрика.ЗаписатьXML(Запись, Объект, ИмяКорня, "urn:guide:collections");
Исключение
ОшибкаЗаписи = ОписаниеОшибки();
Попытка
Запись.Закрыть();
Исключение
ВызватьИсключение ОшибкаЗаписи + Символы.ПС + "Закрытие записи: " + ОписаниеОшибки();
КонецПопытки;
ВызватьИсключение ОшибкаЗаписи;
КонецПопытки;
XML = Запись.Закрыть();
Сообщить(XML);
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(XML);
Попытка
Копия = Фабрика.ПрочитатьXML(Чтение, ОжидаемыйТип);
Исключение
ОшибкаЧтения = ОписаниеОшибки();
Попытка
Чтение.Закрыть();
Исключение
ВызватьИсключение ОшибкаЧтения + Символы.ПС + "Закрытие чтения: " + ОписаниеОшибки();
КонецПопытки;
ВызватьИсключение ОшибкаЧтения;
КонецПопытки;
Чтение.Закрыть();
Копия.Проверить();
Возврат Копия;
КонецФункцииРазбор по шагам
Создать Order с двумя собственными товарами и Note с текстом и суммой 750. Проверить оба объекта до записи.
Писать в строку с явными именами корней order/note и URI собственной схемы. При чтении явно задать ожидаемый тип из той же фабрики.
Закрыть каждого XML-писателя и читателя и при успехе, и при ошибке. Вторичную ошибку закрытия не скрывать.
Проверить список и три части восстановленной последовательности. Не сравнивать XML посимвольно: префиксы могут изменяться.
Очистить исходные список и последовательность. Независимые прочитанные копии сохраняют два товара и три части.
Как проверить результат
Девять булевых сообщений Истина. XML содержит элементы item и смешанное содержимое note с amount 750.
Копии не меняются после очистки исходных объектов. Файлы и записи базы не создаются.
Ожидаемый результат
Получен полный учебный цикл XSD → XDTO → XML → XDTO для двух разных моделей содержимого.
На что обратить внимание
Одинаковый локальный тег с другим URI принадлежит другому контракту.
Этот помощник читает только свою короткую сериализацию. Для внешнего XML нужны отдельные ограничения размера и проверка доверия.
Успешный XML-цикл не подтверждает совместимость с AVITO, OData или иным API: здесь собственная схема.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.