Найти элемент списка значений. Функция ищет первый элемент в списке значений по условиям.
// Функция ищет первый элемент в списке значений по условиям.
//
// Параметры:
// Список - СписокЗначений - Список значений параметров;
// ПараметрыПоиска - Структура - структура, описывающая условия поиска:
// * ВариантПоиска - Строка - "ПоЗначению", "ПоПредставлению", "ПоПредставлениюБезУчетаРегистра";
// * ЗначениеПоиска - Строка - Значение или представление, которое необходимо найти.
//
// Возвращаемое значение:
// ЭлементСпискаЗначений - значение элемента списка значений, или Неопределено, если элемент не найден.
//
Функция НайтиЭлементСпискаЗначений(Список, ПараметрыПоиска) Экспорт
ТипСписокЗначений = Тип("СписокЗначений");
ТипСтруктура = Тип("Структура");
Результат = Неопределено;
ВариантПоиска = "ПоЗначению";
ЗначениеПоиска = Неопределено;
Если ТипЗнч(Список) = ТипСписокЗначений Тогда
Если ТипЗнч(ПараметрыПоиска) = ТипСтруктура Тогда
Если ПараметрыПоиска.Свойство("ВариантПоиска") Тогда
Если ВРег(ПараметрыПоиска.ВариантПоиска) = ВРег("ПоЗначению") Тогда
// Значение по-умолчанию. Уже установлено.
ИначеЕсли ВРег(ПараметрыПоиска.ВариантПоиска) = ВРег("ПоПредставлению") Тогда
ВариантПоиска = "ПоПредставлению";
ИначеЕсли ВРег(ПараметрыПоиска.ВариантПоиска) = ВРег("ПоПредставлениюБезУчетаРегистра") Тогда
ВариантПоиска = "ПоПредставлениюБезУчетаРегистра";
КонецЕсли;
КонецЕсли;
Если ПараметрыПоиска.Свойство("ЗначениеПоиска") Тогда
ЗначениеПоиска = ПараметрыПоиска.ЗначениеПоиска;
Иначе
Возврат Результат;
КонецЕсли;
Иначе
Возврат Результат;
КонецЕсли;
Если ВариантПоиска = "ПоЗначению" Тогда
Результат = Список.НайтиПоЗначению(ЗначениеПоиска);
ИначеЕсли ВариантПоиска = "ПоПредставлению" Тогда
Для каждого ТекущийЭлементСписка Из Список Цикл
Если ТекущийЭлементСписка.Представление = ЗначениеПоиска Тогда
Результат = ТекущийЭлементСписка;
Прервать;
КонецЕсли;
КонецЦикла;
ИначеЕсли ВариантПоиска = "ПоПредставлениюБезУчетаРегистра" Тогда
Для каждого ТекущийЭлементСписка Из Список Цикл
Если ВРег(ТекущийЭлементСписка.Представление) = ВРег(ЗначениеПоиска) Тогда
Результат = ТекущийЭлементСписка;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОтмеченныеЭлементыСпискаЗначений (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)