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

Методы · NextByFieldValue

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

Синтаксис

СледующийПоЗначениюПоля(<ИмяПоля>)

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

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

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

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

СледующийПоЗначениюПоля (NextByFieldValue)

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

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

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

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

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

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

Пример:

Пока Выборка.СледующийПоЗначениюПоля("Товар") Цикл
...
КонецЦикла;

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

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

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

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

Обойти соседние строки одного товара методом СледующийПоЗначениюПоля

Плоская выборка отсортирована по товару: внешний цикл меняет товар, внутренний читает его строки.

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

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

Подготовка

  1. Используйте приведённые три строки и сортировку Название; строки одного товара должны идти рядом.

  2. Здесь нет предложения ИТОГИ: показано управление курсором плоской выборки.


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

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

  1. СледующийПоЗначениюПоля начинает новую группу одинаковых значений. Первый её элемент уже текущий, поэтому сразу учитываем его.

  2. Внутренний Следующий читает остальные строки этой группы и останавливается на смене значения.

  3. Следующий вызов внешнего метода переходит к следующему названию. Общий счёт строк помогает заметить пропуск первой записи.

  4. Для настоящих итогов в отчёте можно выбрать запрос с ИТОГИ; этот урок специально показывает курсор без итогов.

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

  1. Сообщения содержат Книга: 5, Ручка: 1; контроль трёх строк и количества 6 — Истина.

  2. Добавьте третью строку Книга с количеством 4: итог этой группы станет 9, измените контроль числа строк и суммы.

  3. Не убирайте сортировку: объединённые ветви сами по себе не гарантируют нужного порядка.

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

Соседние строки одного значения обработаны группами без повторного чтения первой строки.

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

  1. У обычного Следующий есть особое ограничение после СледующийПоЗначениюПоля: он остаётся внутри текущего значения поля.

  2. Без сортировки одинаковые названия могут образовать отдельные несмежные группы.

  3. Если нужны группы в произвольном порядке исходных данных, используйте запрос с группировкой или накопление в Соответствие.

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

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

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

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

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