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

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

Стандартные действия кнопки командной панели

Стандартные действия кнопки командной панели
Я
   vicof
 
18.01.13 - 06:41
Был переделан типовой справочник, добавлена иерархия.
Сейчас выношу изменения из формы в код.
Возник вопрос. Каким образом программно назначить кнопке командной панели стандартное действие, например "Создать группу"?

Кнопка.Действие = НовыйДействие("чего тут написать?");
 
 
   vicof
 
1 - 18.01.13 - 06:41
*Новый Действие
   k1us181b
 
2 - 18.01.13 - 07:36
Действие (Action)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Содержит имя процедуры обработчика команды.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.
Примечание:

Изменение доступно только на сервере.
   k1us181b
 
3 - 18.01.13 - 07:39
Процедура из БСП

Процедура ОбновитьДанныеКнопкиНастройки()
    
    Если РежимОбмена = "Выгрузка"
        И ОбработкиНастройкиВыгрузки.Количество() > 0 Тогда
        
        ДобавитьКнопкуНастроекПриНеобходимости();
        
        Если ОбработкиНастройкиВыгрузки.Количество() = 1 Тогда
           //    Кнопка типа Действие
 
            мКнопкаНастройки.ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
            мКнопкаНастройки.Имя       = ОбработкиНастройкиВыгрузки.Получить(0).Значение;
            мКнопкаНастройки.Текст     = ОбработкиНастройкиВыгрузки.Получить(0).Представление;
        Иначе
           //    Кнопка типа Подменю
 
            мКнопкаНастройки.ТипКнопки = ТипКнопкиКоманднойПанели.Подменю;
            мКнопкаНастройки.Имя       = "Настройки";
            мКнопкаНастройки.Текст     = "Настройки";
            мКнопкаНастройки.Кнопки.Очистить();
            Для Каждого Эл Из ОбработкиНастройкиВыгрузки Цикл
                мКнопкаНастройки.Кнопки.Добавить(Эл.Значение, ТипКнопкиКоманднойПанели.Действие, Эл.Представление, Новый Действие("ДействияФормыНастройки"));
            КонецЦикла; 
        КонецЕсли;
        
    Иначе
        
        УдалитьКнопкуНастроек();
        
    КонецЕсли;    
    
КонецПроцедуры
   vicof
 
4 - 18.01.13 - 07:40
(3) Для своих процедур все понятно. А для стандартных?
   vicof
 
5 - 18.01.13 - 08:13
Автозаполнение отключено.
   1Сергей
 
6 - 18.01.13 - 08:16
Почему именно в коде это надо сделать?
   vicof
 
7 - 18.01.13 - 08:21
Чтобы обновляться проще было.
   vicof
 
8 - 18.01.13 - 09:43
Сделал так.

ЭлементыФормы.ДействияФормы.Кнопки.Очистить();    ЭлементыФормы.ДействияФормы.АвтоЗаполнение = Истина;

Но мне не нравится. Хоцца красивше.
   vicof
 
9 - 18.01.13 - 11:01
+
   Reset
 
10 - 18.01.13 - 11:33
В качестве развлечения и апа темы могу прдложить, напротив, более страшный вариант:
ЭлементыФормы.КоманднаяПанель.Кнопки.Добавить("ДобавитьГруппу",ТипКнопкиКоманднойПанели.Действие,"ДобавитьГруппу",
    ЗначениеИзСтрокиВнутр("
            |{""#"",6eb4b32a-c85d-4073-a1b5-7d82cb459b38,
            |{1,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
            |{6,4294967295,55c7732c-0c33-4394-adca-9d15082552b6,6,
            |{1,99,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,1},0,1}
            |}
            |}"));

Но никакой гарантии на то, что внутреннее представление действия не изменится с версией платформы, нет :(

Как не менее кривой вариант можно предложить (8), затем считывание значений действий в переменные, затем самостоятельное создание кнопок.
Или при инициализации считывать действие с какой-л другой формы, где нужная кнопка есть.

В общем, "красивше" сделать не удается ;)
 
 Рекламное место пустует
   Reset
 
11 - 18.01.13 - 11:36
Шестение СП на предмет системного перечисления ничего не дало
   Reset
 
12 - 18.01.13 - 11:36
шерстение*
   vicof
 
13 - 18.01.13 - 13:37
(12) во-во, походу нельзя так. Негибко как-то получается.
   Reset
 
14 - 18.01.13 - 13:50
Можно облагородить внешний вид как-то так
Гдето в общедоступном месте:

ДействияСправочникСписок=Новый Структура;
ДействияСправочникСписок.Вставить("Добавить",ЗначениеИзСтрокиВнутр("{""#"",6eb4b32a-c85d-4073-a1b5-7d82cb459b38,
                                                |{1,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
                                                |{6,4294967295,00000000-0000-0000-0000-000000000000,80,
                                                |{1,99,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0},0,1}}}"));
ДействияСправочникСписок.Вставить("ДобавитьГруппу",ЗначениеИзСтрокиВнутр("{""#"",6eb4b32a-c85d-4073-a1b5-7d82cb459b38,
                                                |{1,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
                                                |{6,4294967295,55c7732c-0c33-4394-adca-9d15082552b6,6,
                                                |{1,99,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,1},0,1}}}"));

Потом в нужных местах использовать

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

Я проверил на 8.1.15 и 8.2.16, работает, но возможность останется недокументированной.

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