Представляет собой коллекцию колонок результата запроса.
Полное описание, параметры и ограничения
КоллекцияКолонокРезультатаЗапроса (QueryResultColumnsCollection)
КоллекцияКолонокРезультатаЗапроса (QueryResultColumnsCollection)
Доступен, начиная с версии 8.0.
Элементы коллекции:
КолонкаРезультатаЗапроса
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс колонки (нумерация с 0).
Свойства:
<Имя колонки> (<Column name>)
Методы:
Индекс (IndexOf)
Количество (Count)
Найти (Find)
Получить (Get)
Описание:
Представляет собой коллекцию колонок результата запроса.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
РезультатЗапроса, свойство Колонки
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Прочитать схему результата и повторно обойти выборку
Показываем отличие описания колонок от текущей строки: индекс начинается с нуля, а выборку сначала нужно позиционировать.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Обе строки и два поля заданы в тексте; нет обращений к данным конфигурации.
Оставьте УПОРЯДОЧИТЬ ПО Название для стабильного порядка Книга, Ручка.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ""Книга"" КАК Название, 3 КАК Количество
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1
|УПОРЯДОЧИТЬ ПО Название";
Результат = Запрос.Выполнить();
Сообщить(Не Результат.Пустой());
Колонки = Результат.Колонки;
Сообщить(Колонки.Количество() = 2);
Колонка = Колонки.Найти("Количество");
Если Колонка = Неопределено Тогда
ВызватьИсключение "Не найдена колонка Количество";
КонецЕсли;
Сообщить(Колонки.Индекс(Колонка) = 1);
Сообщить(Колонки.Получить(0).Имя = "Название");
Сообщить(Колонка.ТипЗначения.СодержитТип(Тип("Число")));
Сообщить("Ширина колонки: " + Строка(Колонка.Ширина));
Выборка = Результат.Выбрать();
Сообщить(Выборка.Количество() = 2);
Пока Выборка.Следующий() Цикл
Сообщить(СтрШаблон("%1: %2", Выборка.Получить(0), Выборка.Получить(1)));
КонецЦикла;
Выборка.Сбросить();
Если Не Выборка.НайтиСледующий(Новый Структура("Название", "Ручка")) Тогда
ВызватьИсключение "Учебная строка Ручка не найдена";
КонецЕсли;
Сообщить(Выборка.Количество = 1);
Выборка.Сбросить();
Сообщить(Выборка.НайтиСледующий("Книга", "Название"));
Сообщить(Выборка.Количество = 3);
Сообщить(Не Выборка.НайтиСледующий("Книга", "Название"));
Сообщить(Выборка.Владелец() = Результат);Разбор по шагам
Колонки — описание схемы результата, а не массив значений первой строки. Найти возвращает описание или Неопределено.
Индекс Количество равен 1; Получить(0) у коллекции описаний — колонка Название. ТипЗначения — ОписаниеТипов.
Количество() у выборки считает строки, а поле .Количество без скобок содержит значение текущего товара.
Сбросить возвращает курсор перед первой строкой. НайтиСледующий ищет после текущей позиции: текущая строка повторно не рассматривается.
Владелец возвращает результат, из которого создана выборка; он не возвращает строку товара.
Как проверить результат
Показаны Книга: 3 и Ручка: 1, схема содержит две колонки и индекс 1 для Количество.
Поиск структурой находит Ручка/1, поиск по значению находит Книга/3; повторный поиск Книга без сброса даёт Ложь.
Ширина выводится для наблюдения: не используйте её как размер строки в байтах.
Ожидаемый результат
Схема колонок и состояние курсора проверены отдельно; показаны оба варианта НайтиСледующий.
На что обратить внимание
Нельзя читать поля выборки до успешного Следующий или НайтиСледующий.
Сбросить не выполняет запрос заново: это обход уже полученного результата.
Имена полей и методов могут совпадать; здесь .Количество и .Количество() означают разное.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.