НайтиЭлементСпискаЗначений (БСП)

Автор: 1С
ОбщийМодуль.ИнтернетПоддержкаПользователейКлиент
БСП

Найти элемент списка значений. Функция ищет первый элемент в списке значений по условиям.

// Функция ищет первый элемент в списке значений по условиям.
//
// Параметры:
//  Список          - СписокЗначений - Список значений параметров;
//  ПараметрыПоиска - Структура - структура, описывающая условия поиска:
//    * ВариантПоиска - Строка - "ПоЗначению", "ПоПредставлению", "ПоПредставлениюБезУчетаРегистра";
//    * ЗначениеПоиска - Строка - Значение или представление, которое необходимо найти.
//
// Возвращаемое значение:
//   ЭлементСпискаЗначений - значение элемента списка значений, или Неопределено, если элемент не найден.
//
Функция НайтиЭлементСпискаЗначений(Список, ПараметрыПоиска) Экспорт

	ТипСписокЗначений = Тип("СписокЗначений");
	ТипСтруктура      = Тип("Структура");

	Результат = Неопределено;
	ВариантПоиска = "ПоЗначению";
	ЗначениеПоиска = Неопределено;

	Если ТипЗнч(Список) = ТипСписокЗначений Тогда
		Если ТипЗнч(ПараметрыПоиска) = ТипСтруктура Тогда
			Если ПараметрыПоиска.Свойство("ВариантПоиска") Тогда
				Если ВРег(ПараметрыПоиска.ВариантПоиска) = ВРег("ПоЗначению") Тогда
					// Значение по-умолчанию. Уже установлено.
				ИначеЕсли ВРег(ПараметрыПоиска.ВариантПоиска) = ВРег("ПоПредставлению") Тогда
					ВариантПоиска = "ПоПредставлению";
				ИначеЕсли ВРег(ПараметрыПоиска.ВариантПоиска) = ВРег("ПоПредставлениюБезУчетаРегистра") Тогда
					ВариантПоиска = "ПоПредставлениюБезУчетаРегистра";
				КонецЕсли;
			КонецЕсли;
			Если ПараметрыПоиска.Свойство("ЗначениеПоиска") Тогда
				ЗначениеПоиска = ПараметрыПоиска.ЗначениеПоиска;
			Иначе
				Возврат Результат;
			КонецЕсли;
		Иначе
			Возврат Результат;
		КонецЕсли;
		Если ВариантПоиска = "ПоЗначению" Тогда
			Результат = Список.НайтиПоЗначению(ЗначениеПоиска);
		ИначеЕсли ВариантПоиска = "ПоПредставлению" Тогда
			Для каждого ТекущийЭлементСписка Из Список Цикл
				Если ТекущийЭлементСписка.Представление = ЗначениеПоиска Тогда
					Результат = ТекущийЭлементСписка;
					Прервать;
				КонецЕсли;
			КонецЦикла;
		ИначеЕсли ВариантПоиска = "ПоПредставлениюБезУчетаРегистра" Тогда
			Для каждого ТекущийЭлементСписка Из Список Цикл
				Если ВРег(ТекущийЭлементСписка.Представление) = ВРег(ЗначениеПоиска) Тогда
					Результат = ТекущийЭлементСписка;
					Прервать;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;

	Возврат Результат;

КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ИР Найти в списке

НайтиДублиЭлемента (БСП)

ОтмеченныеЭлементыСпискаЗначений (БСП)

СпискиЗначенийИдентичны (БСП)

ОтмеченныеЭлементы (БСП)

Найти значение в строке

СнятьУсловноеОформлениеСпискаЗначений (БСП)

ЗначенияСписком (БСП)

НайтиЭлементыИГруппыОтбора (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз