//Параметры :
//ТаблицаВыборки (тип Строка) - имя таблицы на языке запросов в которой будут искаться данные
//РеквизитПоиска (тип Строка) - имя реквизита помещаемого в условие
// ЗначенияРеквизитПоиска (тип соответствует типу РеквизитаПоиска) - значение для условия
// ДопРеквизит - дополнительное условие
// ЗначениеДопРеквизита -значение доп условия
// РеквизитРезультата - указывать если необходимо получить поле с именем отличное от Ссылка
&НаСервере
Функция ПоискЗначения(ТаблицаВыборки,РеквизитПоиска,ЗначенияРеквизитПоиска,ДопРеквизит = Неопределено,ЗначениеДопРеквизита = Неопределено,РеквизитРезультата = Неопределено ) Экспорт
Запрос = Новый Запрос;
Если РеквизитРезультата = Неопределено Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка как Ссылка
|ИЗ
| "+ТаблицаВыборки +" КАК Таблица
|ГДЕ
| Таблица."+РеквизитПоиска+" = &ЗначенияДляПоиска";
Колонка = "Ссылка";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица."+РеквизитРезультата+" как "+РеквизитРезультата+"
|ИЗ
| "+ТаблицаВыборки +" КАК Таблица
|ГДЕ
| Таблица."+РеквизитПоиска+" = &ЗначенияДляПоиска";
Колонка = РеквизитПоиска;
КонецЕсли;
Если (ДопРеквизит <> Неопределено) и (ЗначениеДопРеквизита <> Неопределено) Тогда
ТекстЗапроса = ТекстЗапроса +" И
|Таблица."+ДопРеквизит+" = &ЗначениеДопРеквизита";
Запрос.УстановитьПараметр("ЗначениеДопРеквизита",ЗначениеДопРеквизита);
КонецЕсли;
Запрос.УстановитьПараметр("ЗначенияДляПоиска", ЗначенияДляПоиска);
Запрос.Текст = ТекстЗапроса;
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи[0]
КонецЕсли;
ИначеЕсли ВыборкаДетальныеЗаписи.Количество() > 1 Тогда
Возврат Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой).ВыгрузитьКолонку(Колонка);
Иначе
Возврат Неопределено
КонецЕсли;
КонецФункции
Разместил в общем модуле, применяю для поиска значений в регистрах/справочниках/документах.