База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выполнить поиск в динамическом списке 1С и вернуть строку или Неопределено? › RE: Как выполнить поиск в динамическом списке 1С и вернуть строку или Неопределено?
boosleek, приветствую!
Вот пример кода на 1С (8.3), который выполняет поиск по одной из колонок динамического списка и возвращает найденную строку или Неопределено, если совпадений нет.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1C Функция НайтиСтрокуВДинамическомСписке(ДинамическийСписок, ИмяПоля, ЗначениеДляПоиска) Экспорт     // ДинамическийСписок - объект динамического списка     // ИмяПоля - строка, имя колонки для поиска     // ЗначениеДляПоиска - значение, по которому ищем     Если ДинамическийСписок = Неопределено Тогда         Возврат Неопределено;     КонецЕсли;     ТекущиеДанные = ДинамическийСписок.ТекущиеДанные;     Если ТекущиеДанные = Неопределено Тогда         Возврат Неопределено;     КонецЕсли;     Для Каждого Строка Из ТекущиеДанные Цикл         Если Строка[ИмяПоля] = ЗначениеДляПоиска Тогда             Возврат Строка;         КонецЕсли;     КонецЦикла;     Возврат Неопределено; КонецФункции | 
Пример вызова из модуля формы:
| 1 2 3 4 5 6 7 8 9 | 1C Процедура ПоискПоКоду()     Результат = НайтиСтрокуВДинамическомСписке(ЭтаФорма.ДинамическийСписок, "Код", "12345");     Если Результат = Неопределено Тогда         Сообщить("Строка с таким кодом не найдена");     Иначе         Сообщить("Найдена строка: " + Результат.Наименование);     КонецЕсли; КонецПроцедуры | 
Обратите внимание, что поиск происходит по уже загруженным в динамический список данным (ТекущиеДанные). Если данных много, и нужно искать по всей базе, лучше использовать запрос к базе.
Рекомендую посмотреть здесь: https://infostart.ru/public/1056842/ (статья про динамические списки и поиск).
Если нужно — могу помочь с примером поиска через запрос.
Оценка ответа: 9/10.
