Имя: Пароль:
1C
 
Как программно добавить свои пункты в контекстное меню 8.2 упр.формы
0 Genri
 
14.12.10
10:49
Как программно добавить свои пункты в контекстное меню 8.2 упр.формы
Вот нашел пример но как его использовать не понятно. Помогите разобраться.

   реквизиты = Новый Массив;
   реквизиты.Добавить(Новый РеквизитФормы("Поле", Новый ОписаниеТипов("Строка"),,"Мое поле"));
   ЭтаФорма.ИзменитьРеквизиты(реквизиты);
   
   Элемент = Элементы.Добавить("Поле", Тип("ПолеФормы"), ЭтаФорма);
   
   Элемент.ПутьКДанным = "СМСБуфер";
   Элемент.Вид = ВидПоляФормы.ПолеВвода;
   Элемент.Видимость = Истина;
1 Mort
 
14.12.10
10:52
При чем тут поле ввода? Команда нужна.
2 Genri
 
14.12.10
10:57
Ну, я все что нашел по этой теме и уперся в стену.
3 Genri
 
14.12.10
11:27
Я тута
4 AndrejDen
 
14.12.10
11:33
Программно можно только убрать...
5 Mort
 
14.12.10
11:44
(4) Ложь.


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

&НаКлиенте
Процедура Пункт1Нажатие(Команда)
   //

КонецПроцедуры
6 AndrejDen
 
14.12.10
11:53
Простите.. Буду знать
7 Genri
 
14.12.10
12:43
(5)Все получилось.Супер.Спасиб.
8 Genri
 
15.12.10
12:29
У меня другой вопрос возникает а как обращаться к этим командам в меню.
9 Mort
 
15.12.10
12:32
Что значит "обращаться"?
10 Genri
 
15.12.10
12:54
Я вывел в меню справочник физ.лица теперь при нажатие на физ.лицо мне нужно чтобы программа понимала что я именно нажал
на этого и дальше свой код.
11 Mort
 
15.12.10
14:04
Как вариант, сделать под каждый пункт команду с именем однозначно идентифицирующим элемент.

P/S только всё это _нехорошо_. Что будет когда в справочник заведут больше 20 лиц? Лучше придумать другой способ выбора физлица, чем через подменю.
12 Genri
 
15.12.10
14:47
Блин :( так все хорошо начиналось.
Ну как-то не правильно добавить программно можно а использовать команды нельзя :(
13 5 Элемент
 
15.12.10
15:14
(11) >> P/S только всё это _нехорошо_. Что будет когда в справочник заведут больше 20 лиц? Лучше придумать другой способ выбора физлица, чем через подменю.

Поле ввода тебе в помощь.
14 5 Элемент
 
15.12.10
15:15
(10) положи физ.лица в список значений, а в названии команды указывай индекс в списке.
15 Mort
 
15.12.10
15:27
(13)
а) не мне а автору
б)лучше не поле ввода, а тупо выбрать физлицо из справочника по нажатию на единственный пункт меню.
16 Genri
 
15.12.10
15:51
(13)
б) такое у меня уже было с самого начало.
Клиент хочет именно так чтобы в контекстном меню были физ лица
17 5 Элемент
 
15.12.10
15:54
(16) почему именно в контекстном меню?
Опиши, как работает пользователь?
Может подойдет самый простой вариант - быстрый выбор.
18 Mort
 
15.12.10
16:08
(16)

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   СоответствиеКомандФизлицам = Новый Соответствие; // это реквизит формы
   
   ВыборкаФизЛиц = ПолучитьВыборкуФизЛиц();
   Счетчик = 1;
   Пока ВыборкаФизЛиц.Следующий() Цикл
       ИмяКоманды = "Пункт" + Счетчик;
       Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды);
       Команда.Действие = "ПунктНажатие";
       СоответствиеКомандФизлицам.Вставить(Команда, ВыборкаФизЛиц.Ссылка);
       НовЭлемент = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), Элементы.Реквизит1КонтекстноеМеню);
       НовЭлемент.Заголовок = ВыборкаФизЛиц.Наименование;
       НовЭлемент.ИмяКоманды = ИмяКоманды;
       Счетчик = Счетчик+1;
   КонецЦикла;
   
   
КонецПроцедуры

&НаКлиенте
Процедура ПунктНажатие(Команда)
   ФизЛицо = СоответствиеКомандФизлицам.Получить(Команда);
   
   // ....
КонецПроцедуры
19 Genri
 
15.12.10
16:14
(17)Описываю http://fayloobmennik.net/253926
Там выделено красным где должны находиться физ.лица.
20 Genri
 
15.12.10
16:16
(18)О! надо попробовать.
21 Genri
 
15.12.10
16:32
(18)Ну ты вооще. Спасиб.
СоответствиеКомандФизлицам = Новый Соответствие; // это реквизит формы - Это не нужно.