![]() |
![]() |
![]() |
|
[8.2] Динамическое меню в УФ | ☑ | ||
---|---|---|---|---|
0
Адинэснег
13.05.11
✎
09:15
|
Понятно, что нужно добавлять элементы в группу на форме. Действие - команда. Вот только если несколько кнопок в меню будет, а модуль я могу только одной команды предопределить, то вопрос - как в эту команду передать параметр, чтобы понять которая кнопка была нажата. Раньше (в ординари эпликэйшн) в обработчик (события элемента управления) передавался сам элемент управления (Кнопка), сейчас же обработчик - это обработчик команды, то есть даже имя кнопки мне получается не узнать?
Как реализовать сабж в общем? В типовых мэйби в каком-то месте реализовано? |
|||
1
Mitriy
13.05.11
✎
09:19
|
можно создать реквизит формы таблицу, которую и будешь заполнять именами кнопок и параметрами и уже с ними работать в предопределенной процедуре... я как-то так делал...
|
|||
2
Dem1urg
13.05.11
✎
09:19
|
А что тебе мешает определить для формы нужное количество команд? В 8.2 так устроено, что у кнопки напрямую нет обработчика, есть только команда, а вот у команды уже есть модуль.
|
|||
3
Адинэснег
13.05.11
✎
09:49
|
>>А что тебе мешает определить для формы нужное количество команд?
ты серьезно?)) |
|||
4
Stepa86
13.05.11
✎
09:55
|
Динамическое меню в УФ никак не сделать, потому что программно добавлять команды нельзя и в команде узнать из какой кнопки они были вызваны так же нельзя
|
|||
5
a_alenkin
13.05.11
✎
09:57
|
(2) Где ты видел свой модуль у команды ФОРМЫ?
(0) - Создаешь команду, которая имеет уникальное имя - в противном случае будет ошибка указываешь обработчик - создаешь там где тебе надо кнопку (в подменю), указываешь команду. - При нажатии на одну из кнопок, хоть обработчик и один: &НаКлиенте Процедура ОбработчикТвоихКоманд(Команда) Команда.Имя - даст тебе строку, содержащую имя команды |
|||
6
a_alenkin
13.05.11
✎
09:59
|
(4) Ты не поверишь - у меня получилось
|
|||
7
Stepa86
13.05.11
✎
10:00
|
(6) что именно, добавить команду программно или узнать имя кнопки?
|
|||
8
a_alenkin
13.05.11
✎
10:04
|
&НаСервере
Процедура ЗаполнитьВидыОпераций() МассивОпераций = Документы.ПоступлениеТоваровУслуг.ПолучитьВидыОпераций(); Для Каждого ВидОперации Из МассивОпераций Цикл НоваяКоманда = Команды.Добавить(ВидОперации.Наименование); НоваяКоманда.Действие = "ВыборВидаОперации"; НоваяКнопка = Элементы.Добавить(ВидОперации.Наименование, Тип("КнопкаФормы"), Элементы.МенюОперация); НоваяКнопка.Заголовок = ВидОперации.Заголовок; НоваяКнопка.ИмяКоманды = ВидОперации.Наименование; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ВыборВидаОперации(Команда) Если ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации." + Команда.Имя) = Объект.ХозяйственнаяОперация Тогда Возврат; КонецЕсли; Модифицированность = Истина; Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации." + Команда.Имя); ПриИзмененииВидаОперации() КонецПроцедуры В командной панели есть группа с видом "подменю" - МенюОперация и не поверишь - все работает |
|||
9
Mitriy
13.05.11
✎
10:04
|
(4) и кто тебе такую фигню сказал?
|
|||
10
Mitriy
13.05.11
✎
10:04
|
(7) и то, и другое...
|
|||
11
Stepa86
13.05.11
✎
10:08
|
(8),(9) не знал про коллекцию "команды"
(10) и как в обработчике команды узнать имя кнопки, если предварительно соответствие не сохранил? |
|||
12
a_alenkin
13.05.11
✎
10:10
|
см (8)
Команда.Имя - у меня и у команды и у кнопки одинаковое имя в моем случае |
|||
13
a_alenkin
13.05.11
✎
10:11
|
(11) Правда коллекция команды доступна почему то только на сервере - точнее добавить на клиенте у меня не получилось
|
|||
14
Stepa86
13.05.11
✎
10:12
|
(13) ну это то как раз логично, потому что форма на сервере лежит, а на клиент приходит тока представление. Да и обработка видимости и доступности происходит на сервере, так что уж лучше все делать там
|
|||
15
Stepa86
13.05.11
✎
10:14
|
(12) ну это же не означает, что в произвольном обработчике команды я смогу получить имя кнопки, а именно это я имел ввиду в (4)
|
|||
16
Stepa86
13.05.11
✎
10:16
|
+(15) так как оказывается командами можно управлять, то получить имя элемента из которого пришел вызов даже вредно... инкапсуляция и все такое...
|
|||
17
a_alenkin
13.05.11
✎
10:18
|
(15) ну если все создавать произвольно -
конечно могут быть варианты что две или несколько кнопок обрабатывают одну команду - я с таким не сталкивался - мне незачем было так усложнять из кнопки ты сможешь найти команду а из команды узнать кнопку нет В моем же случае я знаю что у них одинаковое имя |
|||
18
Адинэснег
13.05.11
✎
10:26
|
хммм... вроде то, что надо
КомандыФормы (FormCommands) Добавить (Add) Синтаксис: Добавить(<ИмяКоманды>) Параметры: <ИмяКоманды> (необязательный) Тип: Строка. Имя добавляемой команды. Возвращаемое значение: Тип: КомандаФормы. Описание: Добавляет команду в коллекцию. Доступность: Сервер. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |