Как программно добавить общую команду на форму?
С добавлением своей команды проблем нет
а вот как добавить общую команду ?!
подобный код не прокатывает... Может кто подскажет куда смотреть?!
КомандаФормы=Команды.Добавить(ИмяКоманды);
КомандаФормы.Действие="КакоеТоДействие";
КомандаФормы.Заголовок="Какой то заголовок";
Кнопка=Форма.Элементы.Добавить("КакоеТоИмя", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
Кнопка.ИмяКоманды="КакоеТоДействие";
а вот как добавить общую команду ?!
Кнопка=Форма.Элементы.Добавить("КакоеТоИмя", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель);
Кнопка.Имя="ОбщаяКоманда.СтруктураПодчиненности";
подобный код не прокатывает... Может кто подскажет куда смотреть?!
По теме из базы знаний
- Разработка технического задания. Что это такое, зачем оно нужно, с чего начать и как должно выглядеть?
- Методология i3 как основа новой экономики. Индустрия 5.0
- Как сдать экзамен 1С:Специалист по платформе?
- Как добавить гибкость в «жесткие» проекты?
- Как ставить задачи разработчику. От требований до результата
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) в модуле формы прописан такой код:
И далее команды созданы тут:
// МенюОтчеты
МенюОтчеты.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ПодменюОтчеты);
// Конец МенюОтчеты
И далее команды созданы тут:
КомандыОтчетов = МенюОтчетыПовтИсп.КомандыОтчетовФормы(ИмяФормы, ОбъектыОснований, ИмяМетодаМенеджераОтчеты).Скопировать();
МенюОтчеты.КомандыОтчетовФормы(ИмяФормы, СписокОбъектов, ИмяМетодаМенеджераОтчеты)
(1)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КомандаФормы=Команды.Добавить("КакоеТоДействие");
КомандаФормы.Действие="КакоеТоДействие";
КомандаФормы.Заголовок="Какой то заголовок";
Кнопка= Элементы.Добавить("КакоеТоИмя", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель);
Кнопка.ИмяКоманды="КакоеТоДействие";
КонецПроцедуры
&НаКлиенте
Процедура КакоеТоДействие(Отказ)
НавСсылочка = "e1cib/command/ОбщаяКоманда.Команда1";
ПерейтиПоНавигационнойСсылке(НавСсылочка );
КонецПроцедуры
Показать
(1) по прошествии 5 лет задач наконец то решена))
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Кнопка = Элементы.Добавить("КнопкаКарточкаДоговора", Тип("ДекорацияФормы"), ЭтотОбъект);
Кнопка.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Карточка Договор'"),,,,
"/e1cib/command/Обработка.ДО_КарточкаДоговора.Команда.КарточкаДоговора?cmdprm=СправочникСсылка.ВнутренниеДокументы:"+Прав(ПолучитьНавигационнуюСсылку(Объект.Ссылка),32));
КонецПроцедуры
Показать
Гы! По твоему скриншоту можно предположить, что нужно таки сразу создавать кнопку без редактирования коллекции команд формы, но имя должно быть без промежуточной точки:
Форма.Элементы.Добавить("ОбщаяКомандаСтруктураПодчиненности", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
(23) Странно не то слово....
Если в конфигураторе "кинуть" общую команду на форму то в поле "ИмяКоманды" будет заполнено как "ОбщаяКоманда.СтруктураПодчиненности" - в отладчике "ИмяКоманды" будет пустое....но когда программно создаешь кнопку и оставляешь "имя команды" пустое то эффект ровно такой же как если в конфигураторе создать кнопку и не указать "Имя команды"...ее просто не будет не форме.
а СП я тоже читал...но видимо чего то не понял, или понял но нет, или не так понял...
Если в конфигураторе "кинуть" общую команду на форму то в поле "ИмяКоманды" будет заполнено как "ОбщаяКоманда.СтруктураПодчиненности" - в отладчике "ИмяКоманды" будет пустое....но когда программно создаешь кнопку и оставляешь "имя команды" пустое то эффект ровно такой же как если в конфигураторе создать кнопку и не указать "Имя команды"...ее просто не будет не форме.
а СП я тоже читал...но видимо чего то не понял, или понял но нет, или не так понял...
(24) Ну, в СП буквально следующее: "Если кнопка связана не с командой формы, содержит пустую строку" (для свойства "ИмяКоманды").
А ты точно пробовал указывать имя команды БЕЗ точки после "ОбщаяКоманда"? Ну и если у тебя общая команда все-таки параметризирована, то не получится, я думаю.
ЗЫ. Ну а на том, что в конфигураторе пишет - можно особо не зацикливаться. Для ТЗ на форме, например, конфигуратор в колонке тип показывает "Таблица значений", хотя на самом деле тип - "ДанныеФормыКоллекция". Т.е. они скорее своими соображениями удобства руководствовались, чем точностью отображения сути.
А ты точно пробовал указывать имя команды БЕЗ точки после "ОбщаяКоманда"? Ну и если у тебя общая команда все-таки параметризирована, то не получится, я думаю.
ЗЫ. Ну а на том, что в конфигураторе пишет - можно особо не зацикливаться. Для ТЗ на форме, например, конфигуратор в колонке тип показывает "Таблица значений", хотя на самом деле тип - "ДанныеФормыКоллекция". Т.е. они скорее своими соображениями удобства руководствовались, чем точностью отображения сути.
У меня получилось так:
В модуле формы при создании на сервере
НоваяКоманда = Команды.Добавить("КакаяТоКоманда");
НоваяКоманда.Действие = "ОбщаяКоманда.КакаяТоОбщаяКоманда";
Добавляем кнопку на форму:
НоваяКнопкаОбщейКоманды = Элементы.Добавить("НоваяКнопкаОбщейКоманды", Тип("КнопкаФормы"), ЭтаФорма.КоманднаяПанель);
НоваяКнопкаОбщейКоманды.ИмяКоманды = "КакаяТоКоманда";
В модуле формы при создании на сервере
НоваяКоманда = Команды.Добавить("КакаяТоКоманда");
НоваяКоманда.Действие = "ОбщаяКоманда.КакаяТоОбщаяКоманда";
Добавляем кнопку на форму:
НоваяКнопкаОбщейКоманды = Элементы.Добавить("НоваяКнопкаОбщейКоманды", Тип("КнопкаФормы"), ЭтаФорма.КоманднаяПанель);
НоваяКнопкаОбщейКоманды.ИмяКоманды = "КакаяТоКоманда";
(32) получилось решить проблему следующим образом, через гиперссылку (вставьте свою):
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Кнопка = Элементы.Добавить("МояКнопка", Тип("ДекорацияФормы"), ЭтотОбъект);
Кнопка.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Сотрудники.'"),,,, "e1cib/command/Справочник.Команда.СотрудникиВнештатные");
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Кнопка = Элементы.Добавить("МояКнопка", Тип("ДекорацияФормы"), ЭтотОбъект);
Кнопка.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Сотрудники.'"),,,, "e1cib/command/Справочник.Команда.СотрудникиВнештатные");
КонецПроцедуры
В командами можно заморочиться, но это все равно будет работать только на клиенте. Мне понадобилось создать объекты на форме, через БСП при создании сделал. Но дальше нужно было к ним обращаться. Чтобы не делать винегрет, в форме написал 2 процедуры, которые эмулируют вызов команды на клиенте или затем передача ее на сервер и вызов там, тогда доступен контекст формы на сервере.
Не универсально, но за то эффективно.
Не универсально, но за то эффективно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот