Имя: Пароль:
1C
 
Управляемая форма: динамически формируемое подменю
0 le_
 
13.09.10
11:53
В обычной форме было динамически формируемое подменю:

Процедура ЗаполнитьПодменюПодбора()
   Запрос = Новый Запрос;
   Запрос.Текст = "...",
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       ЭлементыФормы.КоманднаяПанельПродукция.Кнопки.КнПодбор.Кнопки.Добавить(Выборка.Код, ТипКнопкиКоманднойПанели.Действие, Выборка.Наименование, Новый Действие("МойПодбор"));
   КонецЦикла;
КонецПроцедуры

Процедура МойПодбор(Элемент)
Если Элемент.Имя = "Имя1" Тогда
   Действие1();
Иначе Если Элемент.Имя = "Имя2" Тогда
   Действие2();
КонецЕсли;
КонецПроцедуры


В управляемой форме пытаюсь сделать то же самое:
&НаСервере
Процедура ЗаполнитьПодменюПодборапоБрэндам()
   Запрос = Новый Запрос;
   Запрос.Текст = "...";
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       НоваяКнопка = Элементы.Добавить("_"+Выборка.Код, Тип("КнопкаФормы"), Элементы.ГруппаПодборПоБрэндам);
       НоваяКнопка.ИмяКоманды = "КомандаПодборПоБрэндам";
       НоваяКнопка.Заголовок = Выборка.Наименование;
   КонецЦикла;
КонецПроцедуры


&НаКлиенте
Процедура КомандаПодборПоБрэндам(Команда)
   //ВОПРОС: КАК ЗДЕСЬ УЗНАТЬ, КАКАЯ КНОПКА БЫЛА НАЖАТА?
   //Имя кнопки нужно, чтобы выполнять различные действия
   //для различных кнопок.
   Сообщить("aaa");
КонецПроцедуры


Вопрос в комментарии выше.
1 Defender aka LINN
 
13.09.10
12:00
Никак. У каждой кнопки должна быть своя команда.
2 le_
 
13.09.10
12:08
(1) Сделал так:

&НаСервере
Процедура ЗаполнитьПодменюПодборапоБрэндам()
   Запрос = Новый Запрос;
   Запрос.Текст = "...";
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       НоваяКнопка = Элементы.Добавить("_"+Выборка.Код, Тип("КнопкаФормы"), Элементы.ГруппаПодборПоБрэндам);
       НоваяКоманда = ЭтаФорма.Команды.Добавить("КомандаПодборПоБрэндам" + Выборка.Код);
       НоваяКоманда.Действие = "КомандаПодборПоБрэндам";
       НоваяКнопка.ИмяКоманды = "КомандаПодборПоБрэндам" + Выборка.Код;
       НоваяКнопка.Заголовок = Выборка.Наименование;
   КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура КомандаПодборПоБрэндам(Команда)
   Сообщить(Команда.Имя);
КонецПроцедуры
3 Rabajaba
 
13.09.10
13:08
(2) несколько команд с одним действием это нормально, у самого такая реализация.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.