Перемещает элемент в коллекции в указанную позицию.
Синтаксис
Переместить(<Элемент>, <НовыйИндекс>)Полное описание, параметры и ограничения
ПакетЗапросовСхемыЗапроса.Переместить (QuerySchemaQueryBatch.MoveTo)
ПакетЗапросовСхемыЗапроса (QuerySchemaQueryBatch)
Переместить (MoveTo)
Доступен, начиная с версии 8.3.11.
Синтаксис:
Переместить(<Элемент>, <НовыйИндекс>)
Параметры:
<Элемент> (обязательный)
Тип: Число, ЗапросВыбораСхемыЗапроса, ЗапросУничтоженияТаблицыСхемыЗапроса.
Индекс элемента или сам элемент, который требуется переместить.
<НовыйИндекс> (обязательный)
Тип: Число.
Индекс, в который нужно переместить указанный элемент.
Описание:
Перемещает элемент в коллекции в указанную позицию.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.11.
Методическая информация
Практические примеры
Скопировать и переставить запросы своего пакета
В собственной схеме создаём запросы 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.
Переместить задаёт абсолютный индекс, Сдвинуть — относительное смещение. Границы заранее известны по собственной подготовке.
ВыполнитьПакет возвращает массив результатов в текущем порядке. Проверяем 1, 2 и 3 в собственных строках.
Удалить принимает индекс; после удаления копия больше не используется. После Очистить не используем и прежний Первый.
Как проверить результат
Четыре начальные проверки, три проверки значений 1/2/3 и две итоговые проверки Истина.
Нет обращений к удалённым дочерним объектам. Очищается структура схемы, не база данных.
Ожидаемый результат
Проверены копирование, абсолютное и относительное перемещение собственного пакета.
На что обратить внимание
Сдвиг за границы коллекции в этот пример не включён.
После очистки пакета не пытайтесь исполнить его как прежний непустой запрос.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.