ПакетЗапросовСхемыЗапроса.Очистить

Методы · Clear

Очищает коллекцию.

Синтаксис

Очистить()
Полное описание, параметры и ограничения

ПакетЗапросовСхемыЗапроса.Очистить (QuerySchemaQueryBatch.Clear)

ПакетЗапросовСхемыЗапроса (QuerySchemaQueryBatch)

Очистить (Clear)

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

Синтаксис:
Очистить()
Описание:

Очищает коллекцию.

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

Сервер, толстый клиент, внешнее соединение.

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

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

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

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

Скопировать и переставить запросы своего пакета

В собственной схеме создаём запросы 1 и 2, копируем первый и меняем копию на 3. Перестановки проверяем индексами и выполнением; очищаем только свой пакет в памяти.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. В учебной обработке или общем модуле выполните каждый фрагмент отдельно на сервере. Все запросы используют только свои числа и параметры, без справочников, документов и регистров рабочей базы.

  2. СхемаЗапроса редактирует структуру и формирует текст, а Запрос выполняет этот текст. Родительская схема должна оставаться в переменной, пока используются её дочерние объекты.

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

Схема = Новый СхемаЗапроса;
Схема.УстановитьТекстЗапроса("ВЫБРАТЬ 1 КАК Номер; ВЫБРАТЬ 2 КАК Номер");
Пакет = Схема.ПакетЗапросов;
Если Пакет.Количество() <> 2 Тогда
    ВызватьИсключение "Ожидались два собственных запроса";
КонецЕсли;
Первый = Пакет.Получить(0);
Копия = Пакет.ДобавитьКопию(0);
Копия.УстановитьТекстЗапроса("ВЫБРАТЬ 3 КАК Номер");
Сообщить(Пакет.Количество() = 3);
Сообщить(Пакет.Индекс(Копия) = 2);
Пакет.Переместить(Копия, 0);
Сообщить(Пакет.Индекс(Копия) = 0 И Пакет.Индекс(Первый) = 1);
Пакет.Сдвинуть(Копия, 2);
Сообщить(Пакет.Индекс(Копия) = 2 И Пакет.Индекс(Первый) = 0);
Запрос = Новый Запрос(Схема.ПолучитьТекстЗапроса());
Результаты = Запрос.ВыполнитьПакет();
Если Результаты.Количество() <> 3 Тогда
    ВызватьИсключение "Не получены три результата своего пакета";
КонецЕсли;
Для ИндексРезультата = 0 По 2 Цикл
    Строки = Результаты[ИндексРезультата].Выгрузить();
    Если Строки.Количество() <> 1 Тогда
        ВызватьИсключение "Ожидалась одна строка каждого своего запроса";
    КонецЕсли;
    Сообщить(Строки[0].Номер = ИндексРезультата + 1);
КонецЦикла;
Пакет.Удалить(2);
Сообщить(Пакет.Количество() = 2);
Пакет.Очистить();
Сообщить(Пакет.Количество() = 0);

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

  1. ДобавитьКопию принимает индекс, не сам объект запроса. Копия создаётся в том же родительском пакете.

  2. Меняем только текст копии, оставляя исходный запрос 1.

  3. Переместить задаёт абсолютный индекс, Сдвинуть — относительное смещение. Границы заранее известны по собственной подготовке.

  4. ВыполнитьПакет возвращает массив результатов в текущем порядке. Проверяем 1, 2 и 3 в собственных строках.

  5. Удалить принимает индекс; после удаления копия больше не используется. После Очистить не используем и прежний Первый.

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

  1. Четыре начальные проверки, три проверки значений 1/2/3 и две итоговые проверки Истина.

  2. Нет обращений к удалённым дочерним объектам. Очищается структура схемы, не база данных.

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

Проверены копирование, абсолютное и относительное перемещение собственного пакета.

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

  1. Сдвиг за границы коллекции в этот пример не включён.

  2. После очистки пакета не пытайтесь исполнить его как прежний непустой запрос.

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

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

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

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

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