ИсточникиСхемыЗапроса.Удалить

Методы · Delete

Удаляет элемент из коллекции.

Синтаксис

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

ИсточникиСхемыЗапроса.Удалить (QuerySchemaSources.Delete)

ИсточникиСхемыЗапроса (QuerySchemaSources)

Удалить (Delete)

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

Вариант синтаксиса: По индексу

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

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

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

<Псевдоним> (обязательный)
Тип: Строка.
Псевдоним источника, который требуется удалить.
Описание варианта метода:
Удаляет источник по псевдониму.
Описание:

Удаляет элемент из коллекции.

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

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

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

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

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

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

Добавить свой вложенный источник и выбрать его поля

В собственный оператор добавляем ВложенныйЗапросСхемыЗапроса по объекту Тип. Поля внешней выборки связываем с его псевдонимом и проверяем 4 × 250.

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

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

Подготовка

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

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

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

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

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

  1. Исходный оператор собственной схемы получен из простого запроса констант и проверен до доступа.

  2. Добавить получает Тип(ВложенныйЗапросСхемыЗапроса) и корректный новый псевдоним Учебные.

  3. Внутренний запрос задаёт 4 и 250. Внешние поля создаём из выражений Учебные.Количество и Учебные.Цена, а не оставляем прежние константы.

  4. Соответствующие колонки ищутся по объектам выражений, проверяются и получают явные псевдонимы результата.

  5. После проверки 4/250 и суммы 1000 удаляем источник по строковому псевдониму и очищаем только своё дерево. Затем удалённые объекты и прежний запрос не используются.

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

  1. Шесть сообщений Истина.

  2. Результат получен из нового собственного вложенного источника, не из прежнего поля константы 3.

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

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

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

  1. Удаление источника может сделать прежние выражения неприменимыми: после удаления этот запрос не выполняется.

  2. Очистка дерева источников не удаляет таблицы базы данных.

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

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

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

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

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