ТаблицаЗначений.НайтиСтроки

Методы · FindRows

Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска. Если в таблице значений добавлены индексы, подбор индекса для поиска осуществляется по точному соответствию состава колонок в индексе и в параметрах поиска, порядок следования колонок значения не имеет.

Синтаксис

НайтиСтроки(<ПараметрыОтбора>)

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

Запрос = Новый Запрос;
ТекстЗапроса =
    "ВЫБРАТЬ
    // текст запроса
    // ...
    ";
Запрос.Текст = ТекстЗапроса;
СписокРаботников = Запрос.Выполнить().Выгрузить();
Отбор = Новый Структура();
Отбор.Вставить("ФизЛицо",Справочники.ФизическиеЛица.ПустаяСсылка());
Строки = СписокРаботников.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
    ЭлементыФормы.СписокРаботников.ТекущаяСтрока = Строки[0];
КонецЕсли;
Полное описание, параметры и ограничения

ТаблицаЗначений.НайтиСтроки (ValueTable.FindRows)

ТаблицаЗначений (ValueTable)

НайтиСтроки (FindRows)

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

Синтаксис:
НайтиСтроки(<ПараметрыОтбора>)
Параметры:

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

Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска.
Если в таблице значений добавлены индексы, подбор индекса для поиска осуществляется по точному соответствию состава колонок в индексе и в параметрах поиска, порядок следования колонок значения не имеет.

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

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

Примечание:
Метод эффективно использовать для выборки неуникальных значений.
Пример:

// СписокРаботников - реквизит формы для представления информации

// о работниках (тип ТаблицаЗначений).

// В форме расположено табличное поле СписокРаботников, в котором

// показываются данные СписокРаботников.

// С помощью запроса выбирается информация о работниках.

Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
// текст запроса
// ...
";
Запрос.Текст = ТекстЗапроса;
СписокРаботников = Запрос.Выполнить().Выгрузить();
Отбор = Новый Структура();
Отбор.Вставить("ФизЛицо",Справочники.ФизическиеЛица.ПустаяСсылка());
Строки = СписокРаботников.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
ЭлементыФормы.СписокРаботников.ТекущаяСтрока = Строки[0];
КонецЕсли;

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

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

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

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

Найти все строки нужного товара и посчитать количество

Учимся отличать поиск первой строки от отбора нескольких совпадений.

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

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

Подготовка

  1. Таблица создаётся на сервере.

  2. В данных намеренно две строки с одинаковым кодом.

Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код");
Товары.Колонки.Добавить("Количество");
СтрокаТовара = Товары.Добавить();
СтрокаТовара.Код = "A-01";
СтрокаТовара.Количество = 2;
СтрокаТовара = Товары.Добавить();
СтрокаТовара.Код = "A-01";
СтрокаТовара.Количество = 3;
СтрокаТовара = Товары.Добавить();
СтрокаТовара.Код = "B-02";
СтрокаТовара.Количество = 4;
Отбор = Новый Структура("Код", "A-01");
СтрокиТовара = Товары.НайтиСтроки(Отбор);
Итого = 0;
Для Каждого СтрокаТовара Из СтрокиТовара Цикл
    Итого = Итого + СтрокаТовара.Количество;
КонецЦикла;
Сообщить(СтрокиТовара.Количество());
Сообщить(Итого);
ПерваяСтрока = Товары.Найти("A-01", "Код");
Если ПерваяСтрока <> Неопределено Тогда
    Сообщить(Товары.Индекс(ПерваяСтрока));
КонецЕсли;

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

  1. НайтиСтроки принимает структуру условий и возвращает массив строк.

  2. Суммируем значения только найденных строк.

  3. Найти возвращает первое совпадение; Индекс определяет его позицию с нуля.

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

  1. Количество найденных строк 2, сумма 5, индекс первой 0.

  2. Замените код отбора на X: количество и сумма должны быть 0.

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

2; 5; 0.

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

  1. Найденные строки принадлежат исходной таблице: изменение строки меняет её данные.

  2. Проверяйте Неопределено перед использованием результата Найти.

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

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

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

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

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