Имя: Пароль:
1C
 
Можно ли программно добавить на командную панель стандартную кнопку
0 Mort
 
21.10.08
16:04
Например "Добавить", "Удалить" к которым не привязываются функции.
1 Stepa86
 
21.10.08
16:29
Зачем программно их добавлять??? Если они иногда нужны, а иногда нет, то правильнее делать их недоступными
2 Aprobator
 
21.10.08
16:58
Можно. Выдержка из СП. Все таки умение читать документацию - великое благо.

КнопкиКоманднойПанели (CommandBarButtons)
Добавить (Add)
Синтаксис:
Добавить(<Имя>, <Тип кнопки>, <Текст>, <Действие>)
Параметры:
<Имя> (необязательный)
Тип: Строка. Имя кнопки - должно соответствовать правилам имен. Уникально в пределах командной панели.
<Тип кнопки> (необязательный)
Тип: ТипКнопкиКоманднойПанели. Тип кнопки интерфейса (разделитель, подменю, действие).
Значение по умолчанию: Разделитель
<Текст> (необязательный)
Тип: Строка. Текст кнопки.
<Действие> (необязательный)
Тип: Действие. Действие, которое необходимо выполнить при нажатии на данную кнопку. Для типов кнопок Разделитель и Подменю, действие указывать не нужно.
Возвращаемое значение:
Тип: КнопкаКоманднойПанели.
Описание:
Добавляет кнопку в конец коллекции кнопок командной панели.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
КП = ЭлементыФормы.КоманднаяПанель;
НовоеДействие = Новый Действие("МояПроцедураВМодулеФормы");
ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
НоваяКнопка = КП.Кнопки.Добавить("Действие1", ТипКнопки, , НовоеДействие);
3 Господин ПЖ
 
21.10.08
17:05
и где тут говорится про стандартные?
4 Mort
 
21.10.08
17:08
(2) Читать документацию это здорово, а читать сабж вообще замечательно. Добавить кнопку и привязать функцию в модуле просто, а вот чтобы кнопка осуществляла действия с ИсточникомДействий, добавить, пометить на удаление и т.п.
5 Aprobator
 
21.10.08
17:09
(4) Дык, а в Новый Действие(ИмяСтандартногоДействия) не пробовал?
6 Bober
 
21.10.08
17:11
(5) у тебя хоть получилось?
7 Mort
 
21.10.08
17:15
Для чего это надо.
Делаю вложенные формы, скоро опубликую, вот как работает:

http://imageshost.ru/links/60c896179e0fcea954b411e67f625b76

Если кнопки на дочерней форме заполняются авто, всё ок. А если кодер снял автозаполнение и нажал "ЗаполнитьАвтоматически" скопировать их в свою панель невозможно (
8 Mort
 
21.10.08
17:18
(5) В таком случае интерпретатор думает, что ИмяСтандартногоДействия - имя функции в проге, т.к. её нет кнопка делается недоступной.
9 Stepa86
 
21.10.08
17:30
(7) Если кнопки копируешь, то и бери действия из источника... например

ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить("НоваяКнопка",ТипКнопкиКоманднойПанели.Действие, "Новая кнопка", ЭлементыФормы.КоманднаяПанель1.Кнопки.Действие.Действие);

работает у меня
10 Bober
 
21.10.08
17:31
(8) остается только разместить все кнопки вручную и программно манипулировать.
11 Mort
 
21.10.08
17:38
(9) У меня источник другая командная панель другой формы, скопировать её действие не получается. Придется забить, вручную писать геморно.
12 Aprobator
 
21.10.08
18:06
Печально. Можно конечно попробовать делать скрытую панель с кнопками со стандартными действиями и при добавлении кнопки ссылаться на эти действия.
13 Aprobator
 
22.10.08
15:56
Путем многих изысканий добавить стандартную кнопку не удалось. Но можно выполнить некую эмуляцию действий стандартных кнопок.

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

Процедура ОбработатьНажатиеКнопки(Элемент) // ОБРАТИТЬ ВНИМАНИЕ НА ПАРАМЕТР ПРОЦЕДУРЫ
      Если Элемент.Имя = "Закрыть" Тогда
           Форма.Закрыть();
      КонецЕсли;
КонецПроцедуры
14 Stepa86
 
22.10.08
16:01
(13) настройку списка, отбор или сортировку уже не так тривиально вызвать...
15 Aprobator
 
22.10.08
16:07
(14) Здесь тоже можно поэкспериментровать в частности с
Расширением элементов управления, расположенных в форме.
В частности может помочь метод:
УстановитьДействие(Событие, Действие)  

Только, в конечном счете, а нужны ли такие извращения?
Независимо от того, куда вы едете — это в гору и против ветра!