ВыборкаИзРезультатаЗапроса.НайтиСледующий

Методы · FindNext

Осуществляет поиск записи по указанным условиям и установку указателя выборки на нее.

Синтаксис

НайтиСледующий(<СтруктураПоиска>)
НайтиСледующий(<Значение>, <Колонки>)

Примеры платформы

СтруктураПоиска = Новый Структура("Товар, Контрагент");
СтруктураПоиска.Товар = НужныйТовар;
СтруктураПоиска.Контрагент = НужныйКонтрагент;
Пока Выборка.НайтиСледующий(СтруктураПоиска) Цикл
    ...
КонецЦикла;
Полное описание, параметры и ограничения

ВыборкаИзРезультатаЗапроса.НайтиСледующий (QueryResultSelection.FindNext)

ВыборкаИзРезультатаЗапроса (QueryResultSelection)

НайтиСледующий (FindNext)

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

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

Синтаксис:
НайтиСледующий(<СтруктураПоиска>)
Параметры:

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

Синтаксис:
НайтиСледующий(<Значение>, <Колонки>)
Параметры:

<Значение> (обязательный)
Тип: Произвольный.
Искомое значение.

<Колонки> (необязательный)
Тип: Строка.
Названия колонок, в которых будет осуществляться поиск значений. Если "Пустая строка" - поиск во всех колонках.
Значение по умолчанию: Пустая строка.
Возвращаемое значение:
Тип: Булево.
Истина - запись найдена; Ложь - в противном случае.
Описание:

Осуществляет поиск записи по указанным условиям и установку указателя выборки на нее.

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Текущая запись не рассматривается.
Пример:

СтруктураПоиска = Новый Структура("Товар, Контрагент");
СтруктураПоиска.Товар = НужныйТовар;
СтруктураПоиска.Контрагент = НужныйКонтрагент;
Пока Выборка.НайтиСледующий(СтруктураПоиска) Цикл
...
КонецЦикла;

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

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

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

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

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

Показываем отличие описания колонок от текущей строки: индекс начинается с нуля, а выборку сначала нужно позиционировать.

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

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

Подготовка

  1. Обе строки и два поля заданы в тексте; нет обращений к данным конфигурации.

  2. Оставьте УПОРЯДОЧИТЬ ПО Название для стабильного порядка Книга, Ручка.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ""Книга"" КАК Название, 3 КАК Количество
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1
|УПОРЯДОЧИТЬ ПО Название";
Результат = Запрос.Выполнить();

Сообщить(Не Результат.Пустой());
Колонки = Результат.Колонки;
Сообщить(Колонки.Количество() = 2);
Колонка = Колонки.Найти("Количество");
Если Колонка = Неопределено Тогда
    ВызватьИсключение "Не найдена колонка Количество";
КонецЕсли;
Сообщить(Колонки.Индекс(Колонка) = 1);
Сообщить(Колонки.Получить(0).Имя = "Название");
Сообщить(Колонка.ТипЗначения.СодержитТип(Тип("Число")));
Сообщить("Ширина колонки: " + Строка(Колонка.Ширина));
Выборка = Результат.Выбрать();
Сообщить(Выборка.Количество() = 2);
Пока Выборка.Следующий() Цикл
    Сообщить(СтрШаблон("%1: %2", Выборка.Получить(0), Выборка.Получить(1)));
КонецЦикла;
Выборка.Сбросить();
Если Не Выборка.НайтиСледующий(Новый Структура("Название", "Ручка")) Тогда
    ВызватьИсключение "Учебная строка Ручка не найдена";
КонецЕсли;
Сообщить(Выборка.Количество = 1);
Выборка.Сбросить();
Сообщить(Выборка.НайтиСледующий("Книга", "Название"));
Сообщить(Выборка.Количество = 3);
Сообщить(Не Выборка.НайтиСледующий("Книга", "Название"));
Сообщить(Выборка.Владелец() = Результат);

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

  1. Колонки — описание схемы результата, а не массив значений первой строки. Найти возвращает описание или Неопределено.

  2. Индекс Количество равен 1; Получить(0) у коллекции описаний — колонка Название. ТипЗначения — ОписаниеТипов.

  3. Количество() у выборки считает строки, а поле .Количество без скобок содержит значение текущего товара.

  4. Сбросить возвращает курсор перед первой строкой. НайтиСледующий ищет после текущей позиции: текущая строка повторно не рассматривается.

  5. Владелец возвращает результат, из которого создана выборка; он не возвращает строку товара.

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

  1. Показаны Книга: 3 и Ручка: 1, схема содержит две колонки и индекс 1 для Количество.

  2. Поиск структурой находит Ручка/1, поиск по значению находит Книга/3; повторный поиск Книга без сброса даёт Ложь.

  3. Ширина выводится для наблюдения: не используйте её как размер строки в байтах.

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

Схема колонок и состояние курсора проверены отдельно; показаны оба варианта НайтиСледующий.

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

  1. Нельзя читать поля выборки до успешного Следующий или НайтиСледующий.

  2. Сбросить не выполняет запрос заново: это обход уже полученного результата.

  3. Имена полей и методов могут совпадать; здесь .Количество и .Количество() означают разное.

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

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

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

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

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