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