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

  • Автор темы BBDragon
  • Дата начала
B

BBDragon

В документе имеется кнопка, которая открывает справочник "Материалы". Внутри него имеются группы, хотелось бы сделать, чтобы по нажатию кнопки открывалась сразу конкретная группа "Железо" справочника. Вопрос, возможно ли это? :)
 
V

vbs

Вешаешь на кнопку процедуру типа :

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


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

unknown181538

Я тут написал, и удалил.
Ибо у меня все сообщения в дерево свернулись. Как это убрать?? ААА!!!
 
B

BBDragon

vbs, спасибо огромное! Примерно так и предполагал, просто хотелось быть уверенным ;)
 
B

BBDragon

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

BBDragon

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

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

vbs

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

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

BBDragon

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

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


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

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

Без указания параметра КонтекстФормы в строке ОткрытьПодбор не получалось.

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

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

Еще раз огромное спасибо всем!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!