Табличная часть.Найти

Методы · Find

Осуществляет поиск значения в указанных колонках табличной части.

Синтаксис

Найти(<Значение>, <Колонки>)

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

НайденнаяСтрока = Состав.Найти(ТекТовар, "Номенклатура");
Если НайденнаяСтрока = Неопределено Тогда
    Предупреждение(НСтр("ru = 'Товар не найден!';"
     + " en = 'Article not found!'"));
Иначе
    Количество = НайденнаяСтрока.Количество;
КонецЕсли;
Полное описание, параметры и ограничения

Табличная часть.Найти (Tabular section.Find)

Табличная часть (Tabular section)

Найти (Find)

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

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

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

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

Осуществляет поиск значения в указанных колонках табличной части.

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

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

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

НайденнаяСтрока = Состав.Найти(ТекТовар, "Номенклатура");
Если НайденнаяСтрока = Неопределено Тогда
Предупреждение(НСтр("ru = 'Товар не найден!';"
+ " en = 'Article not found!'"));
Иначе
Количество = НайденнаяСтрока.Количество;
КонецЕсли;

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

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

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

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

Заполнить и исправить штрихкоды незаписанного товара

Табличная часть принадлежит объекту справочника. Добавляем строки, находим основной штрихкод и удаляем только пустую учебную строку в памяти.

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

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

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

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


Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;

Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
Товар.Наименование = "Учебная книга";
СтрокаКода = Товар.Штрихкоды.Добавить();
СтрокаКода.Штрихкод = "TRAINING-A-01";
СтрокаКода.Основной = Истина;
СтрокаКода = Товар.Штрихкоды.Вставить(0);
СтрокаКода.Штрихкод = "";
СтрокаКода.Основной = Ложь;
ПустаяСтрока = Товар.Штрихкоды.Найти("", "Штрихкод");
Если ПустаяСтрока <> Неопределено Тогда
    Товар.Штрихкоды.Удалить(ПустаяСтрока);
КонецЕсли;
Основные = Товар.Штрихкоды.НайтиСтроки(Новый Структура("Основной", Истина));
Если Основные.Количество() <> 1 Тогда
    ВызватьИсключение "Ожидался ровно один основной учебный штрихкод";
КонецЕсли;
Сообщить(Товар.Штрихкоды.Количество() = 1);
Сообщить(Товар.Штрихкоды.Получить(0).Штрихкод = "TRAINING-A-01");
Сообщить(Товар.Штрихкоды.Индекс(Основные[0]) = 0);
Сообщить(Товар.ЭтоНовый());
Сообщить(Товар.Штрихкоды.Выгрузить().Количество() = 1);

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

  1. Добавить возвращает строку табличной части объекта, а Вставить(0) помещает новую строку перед ней.

  2. Найти ищет первое совпадение в указанной колонке; НайтиСтроки возвращает все совпадения по структуре отбора.

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

  4. Выгрузить создаёт отдельную ТаблицуЗначений для дальнейшего анализа; объект справочника по-прежнему новый.

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

  1. В табличной части осталась одна строка TRAINING-A-01, основной штрихкод имеет индекс 0.

  2. Все пять контрольных сравнений дают Истина.

  3. В списке справочника товар не появляется: запись объекта не выполнялась.

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

Табличная часть подготовлена и проверена в памяти без сохранения объекта.

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

  1. TRAINING-A-01 — учебная строка, не валидный торговый EAN. Этот пример не проверяет стандарт штрихкода.

  2. Табличная часть объекта, ТаблицаЗначений и коллекция данных формы — разные API. Схожие названия методов не делают их одним типом.

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

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

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

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

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