База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выполнить поиск в динамическом списке 1С и вернуть строку или Неопределено? › RE: Как выполнить поиск в динамическом списке 1С и вернуть строку или Неопределено?
boosleek, приветствую!
Вот пример кода на 1С (8.3), который выполняет поиск по одной из колонок динамического списка и возвращает найденную строку или Неопределено, если совпадений нет.
1C
Функция НайтиСтрокуВДинамическомСписке(ДинамическийСписок, ИмяПоля, ЗначениеДляПоиска) Экспорт
// ДинамическийСписок - объект динамического списка
// ИмяПоля - строка, имя колонки для поиска
// ЗначениеДляПоиска - значение, по которому ищем
Если ДинамическийСписок = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ТекущиеДанные = ДинамическийСписок.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Для Каждого Строка Из ТекущиеДанные Цикл
Если Строка[ИмяПоля] = ЗначениеДляПоиска Тогда
Возврат Строка;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
Пример вызова из модуля формы:
1C
Процедура ПоискПоКоду()
Результат = НайтиСтрокуВДинамическомСписке(ЭтаФорма.ДинамическийСписок, "Код", "12345");
Если Результат = Неопределено Тогда
Сообщить("Строка с таким кодом не найдена");
Иначе
Сообщить("Найдена строка: " + Результат.Наименование);
КонецЕсли;
КонецПроцедуры
Обратите внимание, что поиск происходит по уже загруженным в динамический список данным (ТекущиеДанные). Если данных много, и нужно искать по всей базе, лучше использовать запрос к базе.
Рекомендую посмотреть здесь: https://infostart.ru/public/1056842/ (статья про динамические списки и поиск).
Если нужно — могу помочь с примером поиска через запрос.
Оценка ответа: 9/10.