Как программно добавить общую команду на форму?

1. 33lab 929 22.02.18 13:16 Сейчас в теме
С добавлением своей команды проблем нет

КомандаФормы=Команды.Добавить(ИмяКоманды);
КомандаФормы.Действие="КакоеТоДействие";
КомандаФормы.Заголовок="Какой то заголовок";

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



а вот как добавить общую команду ?!

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


подобный код не прокатывает... Может кто подскажет куда смотреть?!
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1486 22.02.18 13:23 Сейчас в теме
(1) суть в том что общая команда имеет свойства к каким объектам она относится. Если она не относится к вашему объекту, то чего хотеть?
3. 33lab 929 22.02.18 13:25 Сейчас в теме
(2) хм.. если бы так...берем в качестве примера общую команду "СтруктураПодчиненности" - к каким объектам она относится?!
4. herfis 499 22.02.18 13:28 Сейчас в теме
(3) К перечисленным в составном типе параметра команды
5. 33lab 929 22.02.18 13:29 Сейчас в теме
(4) Логично..но я специально привел пример с командой "СтруктураПодчиненности" - у нее нет никаких параметров
6. Octopus 337 22.02.18 13:32 Сейчас в теме
(5)
Прикрепленные файлы:
Romario_; user625325_itprofbel; herfis; +3 Ответить
7. 33lab 929 22.02.18 13:33 Сейчас в теме
(6) Ок, убедили - в Ваше случае есть, в моем случае нету. Я понимаю о чем Вы говорите, но у меня это параметр пустой (смотрю типовую УТ11)
8. Octopus 337 22.02.18 13:34 Сейчас в теме
(7) А я вам скрин из типовой УТ11 привел
10. 33lab 929 22.02.18 13:36 Сейчас в теме
(8) Ладно пойдем другим путем - путь будет общая команда без параметров - тогда есть решение?
9. herfis 499 22.02.18 13:35 Сейчас в теме
Могу еще цитату с ИТС по подсистеме привести:
"Прежде всего необходимо принять решение по поводу списка документов, справочников и ПВХ для которых требуется выводить отчет Структура подчиненности. Затем задать список типов выбранных объектов в типах параметра общей команды СтруктураПодчиненности"
26. Xershi 1486 22.02.18 18:11 Сейчас в теме +1 $m
(3) не каждую команду можно запихнуть.
В УТ 11.3 у данной команды нет оснований и судя по коду она через БСП добавляется!
27. Xershi 1486 22.02.18 18:21 Сейчас в теме
(3) в модуле формы прописан такой код:
	// МенюОтчеты
	МенюОтчеты.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ПодменюОтчеты);
	// Конец МенюОтчеты

И далее команды созданы тут:
	КомандыОтчетов = МенюОтчетыПовтИсп.КомандыОтчетовФормы(ИмяФормы, ОбъектыОснований, ИмяМетодаМенеджераОтчеты).Скопировать();
	


МенюОтчеты.КомандыОтчетовФормы(ИмяФормы, СписокОбъектов, ИмяМетодаМенеджераОтчеты)
29. 33lab 929 22.02.18 19:09 Сейчас в теме
(27) я изучил этот код до того как написать на форум :) Принцип там похож на (15) т.е. есть клиентская команда в модуле формы и далее по списку...
15. BackinSoda 22.02.18 14:10 Сейчас в теме +1 $m
(1)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

&НаКлиенте
Процедура КакоеТоДействие(Отказ)
	
	НавСсылочка = "e1cib/command/ОбщаяКоманда.Команда1";
	ПерейтиПоНавигационнойСсылке(НавСсылочка ); 

КонецПроцедуры
Показать
16. 33lab 929 22.02.18 14:15 Сейчас в теме
(15) Вся фишка именно в том, что бы имея общую команду ее вызвать, точнее добавить ее на форму (без промежуточного вызова какой-то клиентской процедуры)
17. herfis 499 22.02.18 14:18 Сейчас в теме
(16) Если это вообще возможно, то по-идее сначала нужно добавить общую команду в коллекцию команд формы с правильным именем (которое я тебе и предложил подсмотреть) без назначения действия, а потом уже назначить ее кнопке.
22. 33lab 929 22.02.18 17:20 Сейчас в теме
(17) Она там как бы по умолчанию есть :)
19. BackinSoda 22.02.18 14:48 Сейчас в теме
(16) видимо, это единственный рабочий вариант
21. 33lab 929 22.02.18 17:17 Сейчас в теме
(19) Странно все это...ну и грустно конечно...Казалось бы примитивная штука...
39. Vasas2007 16.08.23 12:19 Сейчас в теме
(1) по прошествии 5 лет задач наконец то решена))

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Кнопка = Элементы.Добавить("КнопкаКарточкаДоговора", Тип("ДекорацияФормы"), ЭтотОбъект);
Кнопка.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Карточка Договор'"),,,,

"/e1cib/command/Обработка.ДО_КарточкаДоговора.Команда.КарточкаДоговора?cmdprm=СправочникСсылка.ВнутренниеДокументы:"+Прав(ПолучитьНавигационнуюСсылку(Объект.Ссылка),32)); 

КонецПроцедуры 
Показать
user1949871; German; 33lab; +3 Ответить
11. 33lab 929 22.02.18 13:40 Сейчас в теме
Все, что мне нужно это добавить программно кнопку на форму документа (кнопку со ссылкой на общую команду), общая команда без параметров.
12. herfis 499 22.02.18 13:48 Сейчас в теме
А у параметрически добавленных общих команд на форме имя именно такое выводит, в стиле "ОбщаяКоманда.СтруктураПодчиненности"?
13. 33lab 929 22.02.18 13:58 Сейчас в теме
(12) В данном конкретном случае меня интересуют не параметрические общие команды.
Прикрепленные файлы:
14. herfis 499 22.02.18 14:09 Сейчас в теме
Я не про "Форма.Элементы", я про "Форма.Команды".
18. herfis 499 22.02.18 14:26 Сейчас в теме
Гы! По твоему скриншоту можно предположить, что нужно таки сразу создавать кнопку без редактирования коллекции команд формы, но имя должно быть без промежуточной точки:
Форма.Элементы.Добавить("ОбщаяКомандаСтруктураПодчиненности", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
20. 33lab 929 22.02.18 17:17 Сейчас в теме
(18) Пробовал - не работает (если создать кнопку без указания "ИмяКоманды" - она даже на форме не отразится)
23. herfis 499 22.02.18 17:37 Сейчас в теме +1 $m
(20) Странно. Ведь и в СП написано и на твоем скриншоте из (13) видно, что для общих команд в "ИмяКоманды" должна быть пустая строка.
24. 33lab 929 22.02.18 17:42 Сейчас в теме
(23) Странно не то слово....
Если в конфигураторе "кинуть" общую команду на форму то в поле "ИмяКоманды" будет заполнено как "ОбщаяКоманда.СтруктураПодчиненности" - в отладчике "ИмяКоманды" будет пустое....но когда программно создаешь кнопку и оставляешь "имя команды" пустое то эффект ровно такой же как если в конфигураторе создать кнопку и не указать "Имя команды"...ее просто не будет не форме.

а СП я тоже читал...но видимо чего то не понял, или понял но нет, или не так понял...
25. herfis 499 22.02.18 17:59 Сейчас в теме
(24) Ну, в СП буквально следующее: "Если кнопка связана не с командой формы, содержит пустую строку" (для свойства "ИмяКоманды").
А ты точно пробовал указывать имя команды БЕЗ точки после "ОбщаяКоманда"? Ну и если у тебя общая команда все-таки параметризирована, то не получится, я думаю.
ЗЫ. Ну а на том, что в конфигураторе пишет - можно особо не зацикливаться. Для ТЗ на форме, например, конфигуратор в колонке тип показывает "Таблица значений", хотя на самом деле тип - "ДанныеФормыКоллекция". Т.е. они скорее своими соображениями удобства руководствовались, чем точностью отображения сути.
28. 33lab 929 22.02.18 19:08 Сейчас в теме
(25)
А ты точно пробовал указывать имя команды БЕЗ точки после "ОбщаяКоманда"?
Точно

Ну и если у тебя общая команда все-таки параметризирована, то не получится, я думаю.
- нет команда не параметризирована
30. 33lab 929 22.02.18 20:12 Сейчас в теме
Видимо решения (которое бы меня устроило) - нет.
Всем спасибо за потраченное время (СМ отправил).
31. Maria. rum 03.05.18 19:26 Сейчас в теме
У меня получилось так:
В модуле формы при создании на сервере


НоваяКоманда = Команды.Добавить("КакаяТоКоманда");
НоваяКоманда.Действие = "ОбщаяКоманда.КакаяТоОбщаяКоманда";

Добавляем кнопку на форму:
НоваяКнопкаОбщейКоманды = Элементы.Добавить("НоваяКнопкаОбщейКоманды", Тип("КнопкаФормы"), ЭтаФорма.КоманднаяПанель);
НоваяКнопкаОбщейКоманды.ИмяКоманды = "КакаяТоКоманда";
32. q4a 100 04.05.18 15:25 Сейчас в теме
(31) Пробовал: команда добавляется, но она никак не связана с общей командой и по нажатию ничего не происходит. Платформа 8.3.10.2580. Могу выгрузить банальную dt-шку, где 1 справочник, 1 команда и 1 форма, но я думаю каждый такую сможет сделать)
33. lastpioneer 232 22.10.18 17:51 Сейчас в теме
(32) получилось решить проблему следующим образом, через гиперссылку (вставьте свою):

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Кнопка = Элементы.Добавить("МояКнопка", Тип("ДекорацияФормы"), ЭтотОбъект);
Кнопка.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Сотрудники.'"),,,, "e1cib/command/Справочник.Команда.СотрудникиВнештатные");

КонецПроцедуры
MikZ; user591389_aska_rabota; suepifanov; Student1C; noctar; ixijixi; TuneSoft; assa; Drivingblind; fvr2000; ivakop; kondratevsergey1985; maxim_1c; Boneman; +14 Ответить
34. Roman_Go 2 07.11.18 15:43 Сейчас в теме
(33) а потом в модуле команды есть параметр с объектом из которого вызывается команда?
35. lastpioneer 232 07.11.18 19:11 Сейчас в теме
(34) Параметр передать через ссылку у меня не получилось. Система попросту всё лишнее игнорировала. Предполагаю, что это не возможно.
36. kondratevsergey1985 30.08.19 14:47 Сейчас в теме
(34)

В параметре "ПараметрыВыполненияКоманды.Источник" процедуры-обработчика общей команды лежит форма, которая вызвала команду.
38. dap 13 09.06.22 14:17 Сейчас в теме
(36)
лежит форма, если кнопку общей команды закинуть на форму вручную
если программно через гиперссылку то там лежит не форма а окно приложения. и нет там ничего полезного.
жаль
37. Xershi 1486 03.09.21 15:31 Сейчас в теме
В командами можно заморочиться, но это все равно будет работать только на клиенте. Мне понадобилось создать объекты на форме, через БСП при создании сделал. Но дальше нужно было к ним обращаться. Чтобы не делать винегрет, в форме написал 2 процедуры, которые эмулируют вызов команды на клиенте или затем передача ее на сервер и вызов там, тогда доступен контекст формы на сервере.
Не универсально, но за то эффективно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот