Открытие элемента группы справочника напрямую

BBDragon

Well-Known Member
04.05.2008
148
0
#1
В документе имеется кнопка, которая открывает справочник "Материалы". Внутри него имеются группы, хотелось бы сделать, чтобы по нажатию кнопки открывалась сразу конкретная группа "Железо" справочника. Вопрос, возможно ли это? :)
 

vbs

Well-Known Member
18.02.2007
1 708
3
#2
Вешаешь на кнопку процедуру типа :

Список = СоздатьОбъект("Справочник.Материалы");
// ГруппаЖелезо - группа, внутри которой будет открываться справочник
Список.ИспользоватьРодителя(ГруппаЖелезо);
Список.ВыбратьЭлементы();
Список.ПолучитьЭлемент();
ОткрытьПодбор("Справочник.Материалы","ФормаСписка",Список,0);


Добавлено: Vitfil, надеюсь, простит меня за нарушение его главной заповеди при ответе на подобные вопросы :)
 

unknown181538

НеГуру
28.12.2008
1 417
0
#3
Я тут написал, и удалил.
Ибо у меня все сообщения в дерево свернулись. Как это убрать?? ААА!!!
 

BBDragon

Well-Known Member
04.05.2008
148
0
#4
vbs, спасибо огромное! Примерно так и предполагал, просто хотелось быть уверенным ;)
 

BBDragon

Well-Known Member
04.05.2008
148
0
#6
И попробовал бы сначала. Собственные эксперименты - путь к совершенству :)
Попробовал бы с удовольствием, вот только интересовался не для себя, а для друга. А он сейчас в отъезде, MD-шника у меня под рукой не было.. :(
 

BBDragon

Well-Known Member
04.05.2008
148
0
#7
Итак, у друга не получилось, решил сам попробовать. Названия справочников я не совсем точно дал, теперь исправляюсь. Значит, имеется справочник "СкладЖалюзи", в нем группы "КомплектующиеДляВертикальныхЖалюзи" и "КомплектующиеДляОкон", которые тоже являются группами и содержат в себе еще группы. Необходимо по нажатию кнопки открыть группу "ЦепиНижние" из группы "КомплектующиеДляВертикальныхЖалюзи" и выбирать элементы из нее. Т.е. иерархия такая: СкладЖалюзи - КомплектующиеДляВертикальныхЖалюзи - ЦепиНижние. Пробовал так, как предлагали - не работает. Вот мой код:

Код:
Процедура ВыборЦепи()
Список=СоздатьОбъект("Справочник.СкладЖалюзи"); 
Список.ВыбратьЭлементы();	
Список.НайтиПоНаименованию("КомплектующиеДляВертикальныхЖалюзи");
Список.ИспользоватьРодителя(Список.ТекущийЭлемент());
Список.ВыбратьЭлементы();
Список.НайтиПоНаименованию("ЦепиНижние");
Список.ИспользоватьРодителя(Список.ТекущийЭлемент());
Список.ВыбратьЭлементы();
Список.ПолучитьЭлемент();
ОткрытьПодбор("Справочник.СкладЖалюзи", "ФормаСписка", Список,0); 
КонецПроцедуры
 

vbs

Well-Known Member
18.02.2007
1 708
3
#8
Много лишнего. Достаточно так :
Процедура ВыборЦепи()
Список=СоздатьОбъект("Справочник.СкладЖалюзи");
Список.НайтиПоНаименованию("ЦепиНижние");
Список.ИспользоватьРодителя(Список.ТекущийЭлемент());
Список.ВыбратьЭлементы();
Список.ПолучитьЭлемент();
ОткрытьПодбор("Справочник.СкладЖалюзи", "ФормаСписка", Список,0);
КонецПроцедуры

и процедуру ОбработкаПодбора включить
 

BBDragon

Well-Known Member
04.05.2008
148
0
#9
Итак, наконец-то удалось решить эту проблему. Вот финальный вариант:
1) в модуле ФормыСписка справочника СкладЖалюзи

Код:
Процедура ПриОткрытии()
Параметр = Форма.Параметр;
Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
ОткрываемаяГруппа = Параметр.Получить("Группа");
Если ПустоеЗначение(ОткрываемаяГруппа) = 0 Тогда
ИспользоватьРодителя(ОткрываемаяГруппа);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Процедура, повешенная на кнопку документа:

Код:
Процедура ВыборЦепи()  
СпрГ=СоздатьОбъект("Справочник.СкладЖалюзи"); 
СпрГ.НайтиПоНаименованию("ЦепиНижние",0,1);
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.Установить("Группа", СпрГ.ТекущийЭлемент());
ОткрытьПодбор("Справочник.СкладЖалюзи","ФормаСписка",Параметры,,Спрг); 
КонецПроцедуры
Без указания параметра КонтекстФормы в строке ОткрытьПодбор не получалось.

Ну и финальная обработка подбора (это пока только набросок)

Код:
Процедура ОбработкаПодбора(Значение)	 
Товар = Значение;
Ценность = Товар.Цена;
Предупреждение(Ценность);
КонецПроцедуры
Еще раз огромное спасибо всем!