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

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


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

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

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


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


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

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

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

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

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