Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Программное создание Кнопок (Управляеммы формы)

Программное создание Кнопок (Управляеммы формы)
Я
   prof-net
 
07.11.17 - 19:42
Добрый день. Есть такая непонятка:
 
 
   Филиал-msk
 
1 - 07.11.17 - 19:42
Да неужели?
   zak555
 
2 - 07.11.17 - 19:43
напиши код и укажи проблему
   prof-net
 
3 - 07.11.17 - 19:44
программно создаю команды на форме, но сколько их будет - изначально не знаю. Хочу это дело обработать в цикле
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Команда = Команды.Добавить("Команда1");
    Команда.Действие   = "ВыполнитьДействиеКоманды1"; 
    
    НовыйЭлемент        = Элементы.Добавить("Команда1", Тип("КнопкаФормы"), Элементы.Группа3 );
    НовыйЭлемент.Вид    = ВидКнопкиФормы.ОбычнаяКнопка; 
    НовыйЭлемент.ИмяКоманды = "Команда1";
    
    
    
    Команда = Команды.Добавить("Команда2");
    Команда.Действие   = "ВыполнитьДействиеКоманды2"; 
    
    НовыйЭлемент        = Элементы.Добавить("Команда2", Тип("КнопкаФормы"), Элементы.Группа3 );
    НовыйЭлемент.Вид    = ВидКнопкиФормы.ОбычнаяКнопка; 
    НовыйЭлемент.ИмяКоманды = "Команда2";
    
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьДействиеКоманды1()
    Сообщить("Команда 1");
КонецПроцедуры


&НаКлиенте
Процедура ВыполнитьДействиеКоманды2()
    Сообщить("Команда 2");
КонецПроцедуры

Вопрос: Как программно создать обработчики событий для кнопок?
   Филиал-msk
 
4 - 07.11.17 - 19:44
(0) Там под твоим сообщением реклама крутится - это оно?
   prof-net
 
5 - 07.11.17 - 19:46
Какая реклама?
   prof-net
 
6 - 07.11.17 - 19:47
Случайно нажал отправить, не дописав до конца сообщение :(
   prof-net
 
7 - 07.11.17 - 19:54
Т.е. допустим так:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Счетчик = 0;
    
    Пока Счетчик < 20 Цикл
    
    Команда = Команды.Добавить("Команда" + Счетчик);
    Команда.Действие   = "ВыполнитьДействиеКоманды" + Счетчик; 
    
    НовыйЭлемент        = Элементы.Добавить("Команда" + Счетчик, Тип("КнопкаФормы"), Элементы.Группа3 );
    НовыйЭлемент.Вид    = ВидКнопкиФормы.ОбычнаяКнопка; 
    НовыйЭлемент.ИмяКоманды = "Команда"+ Счетчик;
    
    
    Счетчик = Счетчик +1;
    
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьДействиеКоманды1()
    Сообщить("Команда 1");
КонецПроцедуры


&НаКлиенте
Процедура ВыполнитьДействиеКоманды2()
    Сообщить("Команда 2");
КонецПроцедуры


У меня создается 20 кнопок, но только 2 из них выполняют действие... Причем переменная счетчик допустим мне неизвестна... Не писать же мне в коде 100 процедур для каждой, команды, которая может создаться, а может и нет

Вопрос в том, как программно можно обработать обработчики событий для создаваемых кнопок
   Филиал-msk
 
8 - 07.11.17 - 19:59
(5) Вот и я думаю, зачем тебе Балчуг Вьюпорт...
(7) Зачем ты создаёшь 20 кнопок, из которых только две рабочие? Нет у кнопки обработчика, есть действие у команды.
   Mankubus
 
9 - 07.11.17 - 20:15
(0) создай один обработчик команды. У него есть параметр Команда.
Анализируй его и выполняй действие в зависимости от значения параметра
   Филиал-msk
 
10 - 07.11.17 - 20:39
(9) Да вы сговорились, нерусские? Нет у обработчика параметра. Есть у команды --действие-процедура. Есть у элемента формы - кнопки -- команда. Закопайте уже стюардессу.
 
 Рекламное место пустует
   Маленький Мук
 
11 - 07.11.17 - 20:56
Команда.Имя
   Byasha
 
12 - 07.11.17 - 20:59
(10) При вызове процедуры обработчика команды у нее есть предопределенный параметр "Команда". Через это параметр передается команда которая и запускает обработчик.
А дальше 
Если Команда.Имя = "ТвояКоманда" Тогда 
    Читать СП до просветления;
Иначе
    Убится головой об стену;
КонецЕсли
   Byasha
 
13 - 07.11.17 - 21:02
Вместо этого "Команда.Действие   = "ВыполнитьДействиеКоманды" + Счетчик"
Напиши "Команда.Действие   = "ВыполнитьДействиеКоманды"

Задай обработчик

&НаКлиенте 
Процедура ВыполнитьДействиеКоманды(Команда)
    Сообщить(Команда.Имя);
КонецПроцедуры

И все поймешь.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует