2

Как выполнить программный поиск в таблице значений?

Для программного поиска строк в таблице значений во встроенном языке 1С:Предприятие 8.3 имеется два различных метода:

Метод Найти()

С помощью метода Найти() таблицы значений можно найти первое вхождение строки по значению ячейки. Значение можно искать по всей таблице значений или по определенным колонкам, например:

ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Код");
ТаблицаЗначений.Колонки.Добавить("Наименование");
//поиск во всех колонках таблицы значений:
ПерваяСтрока = ТаблицаЗначений.Найти("Товар1");
Если ПерваяСтрока = Неопределено Тогда
	Сообщить("Совпадений нет!");
КонецЕсли;
//поиск по определенным колонкам:
ПерваяСтрока = ТаблицаЗначений.Найти("Товар", "Наименование");
Если ПерваяСтрока = Неопределено Тогда
	Сообщить("Совпадений нет!");
КонецЕсли;

Метод НайтиСтроки()

Метод НайтиСтроки() таблицы значений позволяет найти все строки, удовлетворяющие условиям отбора. При этом условие м.б. составным:

ПараметрыПоиска = Новый Структура("Наименование", "Услуга");
мНайденныеСтроки = ТаблицаЗначений.НайтиСтроки(ПараметрыПоиска);
Если мНайденныеСтроки.Количество() = 0 Тогда
	Сообщить("Совпадений нет!");
Иначе
	Для каждого НайдСтрока Из мНайденныеСтроки Цикл
		ТаблицаЗначений.Удалить(НайдСтрока);
	КонецЦикла;
КонецЕсли;

Комментарии

  1. А можно как-то реализовать поиск вхождений? Типа, надо найти слово «1С» во всех колонках и остановиться на форме в той, где найдено? Идея: перебор строк, по колонкам проверяем содержимое. Но как встать в определенной колонке при нахождении?

    • Эффективнее будет использование метода Найти() без указания колонок, а конкретную колонку уже искать перебором значений колонок. Текущую колонку на форме можно установить методом табличного поля ТекущаяКолонка()

      ЭлементыФормы.тзТовары.ТекущаяКолонка(Колонка);

      для обычных форм или

      Элементы.тзТовары.ТекущийЭлемент(Поле);

      для управляемых

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *