Имя: Пароль:
1C
 
Как добавить кнопку с командой программно?
,
0 Мисти
 
22.10.15
21:25
Элемент = ЭтаФорма.Элементы.Добавить("Кос_СтатусДоговора", Тип("ПолеФормы"),ГруппаЭлементыКос);
        Элемент.ПутьКДанным = "Объект.Кос_Собственник.ДоговорКонтрагента";
        Элемент.Вид = ВидПоляФормы.ПолеНадписи;
        Элемент.Гиперссылка = Истина;
Вот в таком стиле?
1 Shrek_yar
 
22.10.15
21:31
&НаКлиенте
  Процедура СоздатьКнопку(Команда)
     СоздатьКнопкуНаСервере();
  КонецПроцедуры

  &НаСервере
  Процедура СоздатьКнопкуНаСервере()
     //Добавляем форме команду
     Кмд = ЭтаФорма.Команды.Добавить("Команда1");
     Кмд.Действие = "Тест";
     Кмд.Заголовок = "Тест";

     //Добавляем саму кнопку
     Элемент = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
     Элемент.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
     Элемент.ИмяКоманды = "Команда1";
  КонецПроцедуры

  //Обработчик нажатия кнопки
  &НаКлиенте
  Процедура НажатиеКнопки()
     Сообщить("Кнопка создана программно");
  КонецПроцедуры
2 Lexey_
 
22.10.15
21:45
(0) код в (1) получен путем нажатия на красную Я справа от темы
3 Мисти
 
22.10.15
21:49
Ой! А у меня и так всё получилось. Оказывается, команду в форме всё равно нужно заводить, вот что мне не нравится.
4 Garykom
 
гуру
22.10.15
21:52
(3) зато можно одну команду сделать... универсальную для разных кнопок... и они будут по разному отрабатывать, смотря какую нажали...
5 Shrek_yar
 
22.10.15
21:57
(2) - да
(3) - надо, придеться.
6 Мисти
 
22.10.15
21:59
Не, можно же команду не заводить в форме!
     Кмд = ЭтаФорма.Команды.Добавить("Команда1");
     Кмд.Действие = "Тест";
     Кмд.Заголовок = "Тест";
7 Shrek_yar
 
22.10.15
22:00
Что тогда команды будет выполнять?
8 фобка
 
22.10.15
22:01
Процедура нужна все равно
9 Shrek_yar
 
22.10.15
22:02
Имя команды -> то что будет при нажатие выпоняться
10 Shrek_yar
 
22.10.15
22:02
11 Shrek_yar
 
22.10.15
22:03
Обработчик команды должен существовать в модуле формы и предваряться директивой компиляции &НаКлиенте.
12 фобка
 
22.10.15
22:03
(9) действие то есть. Процедура в модуле формы
13 Мисти
 
22.10.15
22:21
(11) Да, так и есть!
Теперь вторая ожидаемая проблема - надо показать старый документ по кнопке:
&НаСервере
Функция Кнопка1НажатиеНаСервере()
        ДатаДок = Дата("20"+Сред(Объект.Кос_НомерСтарогоДоговора,4,2), "01", "01");
        Док = Документы.АР_ЗаключениеДоговораАренды.НайтиПоНомеру(Объект.Кос_НомерСтарогоДоговора,ДатаДок);
        Возврат(Док);
КонецФункции

&НаКлиенте
Процедура Кнопка1Нажатие1(Команда)
    Док = Кнопка1НажатиеНаСервере();
    Попытка
        ТекФорма = Док.ПолучитьФорму("ФормаДокумента").Открыть();
    Исключение
    КонецПопытки;
    
КонецПроцедуры

И ни фига она не показывает.
14 Мисти
 
22.10.15
22:44
Кажись, нашла.
Закон Брукера: Даже маленькая практика стоит большой теории.