Имя: Пароль:
1C
1С v8
Как программно выбрать элемент подчиненного справочника?
0 napagokc
 
01.08.12
08:48
Мне нужна не форма выбора, а просто ссылка на конкретный элемент справочника. Отбор по Владельцу и по булевому параметру "ПоУмолчанию".
Разумеется, можно сделать выборку по владельцу, а потом в цикле найти элемент с реквизитом "ПоУмолчанию = Истина". Но, полагаю, это не самый разумный вариант. А вот просто выборкой получить всего один конкретный элемент у меня почему-то не получается, что-то не так делаю. Поделитесь опытом, а? Где я не прав и почему?

ВыборкаПравилаПоУмолчанию = Справочники.ПравилаКомплектации.Выбрать(,Комплект,Новый Структура("ПоУмолчанию", Истина));
Если ВыборкаПравилаПоУмолчанию.Следующий() Тогда
   Сообщить("удача! " + ВыборкаПравилаПоУмолчанию.Наименование);
КонецЕсли;

Ошибка такая:
Ошибка при вызове метода контекста (Выбрать)
ВыборкаПравилаПоУмолчанию = Справочники.ПравилаКомплектации.Выбрать(,Комплект,Новый Структура("ПоУмолчанию", Истина));
по причине:
Недопустимое значение параметра (параметр номер '3')
1 izekia
 
01.08.12
08:49
потому что запрос надо использовать
2 napagokc
 
01.08.12
08:51
(1) А выборкой нельзя? Для чего же тогда Отбор этот стоит в параметрах выборки?
3 izekia
 
01.08.12
08:51
(0) это соблюдено? " В качестве полей для отбора могут задаваться только поля "Код", "Наименование" и реквизиты справочника, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или в значение "Индексировать с доп. упорядоч.". "
4 napagokc
 
01.08.12
08:51
+(2) Запрос просто менее читабельный, поэтому хотел так сделать
5 napagokc
 
01.08.12
08:52
(3) Ого? Не встретил такого правила в справке, сейчас перечитаю. Нет, не соблюдено: реквизит "ПоУмолчанию" - собственный реквизит
6 izekia
 
01.08.12
08:53
(4) в запросе ты просто можешь выбрать только необходимые данные и обработать как тебе будет нужно, а здесь ты получаешь выборку ссылок и потом все равно дергаешь необходимые свойства
7 izekia
 
01.08.12
08:53
(5) я из сп скопировал
8 napagokc
 
01.08.12
08:55
Да, получилось. Если реквизит "ПоУмолчанию" разрешить индексировать в Конфигураторе, то отбор работает корректно. Но что-то как-то... Видимо, действительно запросом лучше сделать, а не индексировать этот реквизит... Спасибо!
9 izekia
 
01.08.12
09:01
(8) ну если объем большой, то индекс не помешает
Основная теорема систематики: Новые системы плодят новые проблемы.