Для поиска элементов справочника, подчиненных определенному объекту (владельцу), в 1С 8.3 существует два основных способа.
Этот метод наиболее эффективен, если подчиненных элементов может быть много или нужно получить данные сразу нескольких полей.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Спр.Ссылка КАК Ссылка,
| Спр.Наименование КАК Наименование
|ИЗ
| Справочник.ИмяВашегоСправочника КАК Спр
|ГДЕ
| Спр.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", СсылкаНаВладельца);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Обработка результата, например:
Сообщить(ВыборкаДетальныеЗаписи.Наименование);
КонецЦикла;
Если вам нужно быстро найти хотя бы один элемент по владельцу в коде, можно использовать метод менеджера справочника.
// Вернет ссылку на найденный элемент или ПустуюСсылку, если ничего не найдено
НайденнаяСсылка = Справочники.ИмяВашегоСправочника.НайтиПоРеквизиту("Владелец", СсылкаНаВладельца);
Если Не НайденнаяСсылка.Пустая() Тогда
// Элемент найден
КонецЕсли;
Тип параметра: В параметр &Владелец (или второй аргумент метода НайтиПоРеквизиту) должна передаваться именно Ссылка, а не строка или наименование владельца.
Производительность: Поле Владелец является стандартным реквизитом и всегда индексируется базой данных, поэтому поиск по нему выполняется мгновенно даже в справочниках с миллионами записей.
Остались вопросы?
Мы расскажем вам все про 1С в облаке, ответим на любые вопросы и поделимся полезными материалами по обучению.
Расскажите, как сервис 42Clouds помог вашему бизнесу. Отзыв будет опубликован после проверки модератором.