КолонкиСхемыЗапроса.Индекс

Методы · IndexOf

Получает индекс элемента в коллекции.

Синтаксис

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

КолонкиСхемыЗапроса.Индекс (QuerySchemaColumns.IndexOf)

КолонкиСхемыЗапроса (QuerySchemaColumns)

Индекс (IndexOf)

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

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

<Элемент> (обязательный)
Тип: КолонкаСхемыЗапроса, КолонкаВложеннаяТаблицаСхемыЗапроса.
Элемент, индекс которого определяется.
Возвращаемое значение:
Тип: Число.
Если не найдено, то возвращается -1.
Описание:

Получает индекс элемента в коллекции.

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

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

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

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

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

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

Переименовать колонку и заменить её собственное поле

Количество становится колонкой Экземпляры с выражением 4. Проверяем привязку поля к колонке, перестановку и итоговый расчёт 1000.

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

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

Подготовка

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

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

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

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

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

  1. Найти со строкой ищет по Псевдоним. После поиска проверяем Неопределено, затем переименовываем только свою колонку.

  2. Колонка.Поля содержит поля операторов, относящиеся к этой колонке. В собственном единственном операторе ожидается один элемент.

  3. Поле может быть Неопределено по API, поэтому проверяем его перед поиском индекса.

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

  5. Исполняем текст до удаления: Экземпляры=4 и Цена=250. Затем удаляем и очищаем только собственные колонки; прежняя колонка больше не используется.

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

  1. Одиннадцать сравнений Истина.

  2. В выгруженном результате колонка называется Экземпляры, а не Количество; вычисление равно 1000.

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

Проверены псевдоним, поле колонки, перестановка и собственный результат.

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

  1. Псевдоним — не имя поля справочника; изменяется структура этого запроса.

  2. После очистки колонок не выполняем пустую выборку и не используем удалённые дочерние объекты.

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

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

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

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

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