Имя: Пароль:
1C
1С v8
Программно добавить "Вывести список", "Настройка списка"
0 nufnufcheg
 
01.06.14
13:45
Обычные формы, контекстное меню табличного поля.

Следующим кодом контекстному меню табличного поля определяется собственный набор команд:

        ИмяМенюТабличнойЧасти = "НовоеКонтекстноеМеню"+ИмяТабЧасти;
        ЭлементыФормыДокумента[ИмяТабЧасти].АвтоКонтекстноеМеню = Ложь;
        ЭлементыФормыДокумента.Добавить(Тип("КоманднаяПанель"),ИмяМенюТабличнойЧасти,Истина);
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].ИсточникДействий = ЭлементыФормыДокумента[ИмяТабЧасти];
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].АвтоЗаполнение = Истина;

        ЭлементыФормыДокумента[ИмяТабЧасти].КонтекстноеМеню = ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти];
                
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].Кнопки.Вставить(0,"Разделитель_"                        ,ТипКнопкиКоманднойПанели.Разделитель,                                ,);
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].Кнопки.Вставить(0,"ВедомостьТоварыНаСкладах"            ,ТипКнопкиКоманднойПанели.Действие,"Товары на складах"                ,Новый Действие("ПоказатьОтчетПоНоменклатуре"));
    
В итоге получается следующий состав контекстного меню:

"ВедомостьТоварыНаСкладах"    Действие    ПоказатьОтчетПоНоменклатуре    "Товары на складах"
"Разделитель_"    Разделитель        
"Действие"    Действие    Добавить    "&Добавить"
"Действие1"    Действие    Скопировать    "&Скопировать"
"Действие2"    Действие    Изменить    "&Изменить"
"Действие3"    Действие    Удалить    "&Удалить"
"Действие4"    Действие    Закончить редактирование    "Закончить редактирование"
"Действие5"    Действие    Переместить вверх    "&Переместить вверх"
"Действие6"    Действие    Переместить вниз    "&Переместить вниз"
"Действие7"    Действие    Сортировать по возрастанию    "Сортировать по возрастанию"
"Действие8"    Действие    Сортировать по убыванию    "Сортировать по убыванию"

Вопрос. Как в него включить две команды "Вывести список" и "Настройка списка"?

напрашивается через метод Добавить или Вставить, так же как добавлена команда "Товары на складах". Но что указать в действии?

ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].Кнопки.Вставить(Позиция,Имя,ТипКнопкиКоманднойПанели.Действие,Заголовок, АВОТТУТЧТОУКАЗАТЬ)

Как получить Действие.НастройкаСписка?
1 zulu_mix
 
01.06.14
13:59
Новый Действие("ИмяПроцедуры-Обработчика")
2 nufnufcheg
 
01.06.14
14:00
(1) Новый Действие("ТиповоеДействиеНастройкаСписка")?
3 zulu_mix
 
01.06.14
14:08
(2) а в коде есть процедура с таким именем?
4 nufnufcheg
 
01.06.14
14:37
(3) в том то и дело, что это типовое действие, наподобие "Скопировать", "Сортировать по возрастанию", но написать Действие = Новый Действие("Скопировать") нельзя.

Вопрос как раз в том, как установить это типовое действие
5 zulu_mix
 
01.06.14
14:43
положи на форму командную панель, сделай ее невидимой, свяжи с источником данных, обойди все кнопки меню, найди нужную, получи из нее Действие.
6 nufnufcheg
 
01.06.14
14:49
(5) не поверишь, пока так и сделал) но это же через оппу)
7 zulu_mix
 
01.06.14
14:50
(6) а по другому в этом случае никак
8 nufnufcheg
 
01.06.14
16:59
если кому интересно на будущее:
        ДействиеНастройкаСписка = ЗначениеИзСтрокиВнутр("{""#"",6eb4b32a-c85d-4073-a1b5-7d82cb459b38,
        |{1,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
        |{6,4294967295,00000000-0000-0000-0000-000000000000,97,
        |{1,99,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1}
        |}
        |}");
        ДействиеВыводСписка = ЗначениеИзСтрокиВнутр("{""#"",6eb4b32a-c85d-4073-a1b5-7d82cb459b38,
        |{1,1,fbe38877-b914-4fd5-8540-07dde06ba2e1,
        |{6,4294967295,00000000-0000-0000-0000-000000000000,99,
        |{1,99,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1}
        |}
        |}");
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].Кнопки.Добавить("Разделитель_2"            ,ТипКнопкиКоманднойПанели.Разделитель,                                , );
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].Кнопки.Добавить("НастройкаСписка"            ,ТипКнопкиКоманднойПанели.Действие, "Настройка списка"                , ДействиеНастройкаСписка);
        ЭлементыФормыДокумента[ИмяМенюТабличнойЧасти].Кнопки.Добавить("ВывестиСписок"            ,ТипКнопкиКоманднойПанели.Действие, "Вывести список"                , ДействиеВыводСписка);


данные команды были добавлены на форму вручную, в отладчике сериализовал и получил их код. теперь их можно использовать программно)))
пользуйтесь

P.S. от чего зависит сериализованное значение - хз. в разных конфигах и на разных платформах сериализованное значение оказалось одинаковым. так что сей код можно считать универсальным)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.