Имя: Пароль:
1C
 
Программно кнопку в командной панели без самого документа
0 picom
 
20.06.25
08:31
Задача
Сделать кнопку в командной панели всех документов (или конкретного списка).
На примере УНФ.
Кнопка должна выполнять и клиентский и серверный код.
Форму не нужно расширять, т.к. затянет гору реквизитов под расширение.

Текущая ситуация
в ОМ.ПодключаемыеКоманды
&После("ПриСозданииНаСервере")
Процедура пм_ПриСозданииНаСервере(Форма, Знач ПараметрыРазмещения)
	Если Форма.ИмяФормы = "Документ.ЗаказПокупателя.Форма.ФормаДокумента" Тогда
		ДокументЗаказКлиентаФормаДокумента(Форма);
	КонецЕсли;
КонецПроцедуры 

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

Процедура Подключаемый_ВыполнитьНазначаемуюКоманду()
	ЗапуститьПриложение("https://forum.mista.ru/");
КонецПроцедуры


Проблема
Кнопка не появилась, видимо команда ожидается в модуле формы, а ее не нужно захватывать.
Т.е. надо где-то описать кодом в другом месте, где и как? В общей команде?
1 Мультук
 
гуру
20.06.25
09:10
(0)


По-моему, нужно идти по пути использования типовой процедуры из модуля формы

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры


Т.е. в вашем случае будет

Процедура ДокументЗаказКлиентаФормаДокумента (Форма)
	НовКоманда=Форма.Команды.Добавить("Команда1");
	НовКоманда.Действие="Подключаемый_ВыполнитьКоманду"; //<------------------------------------------
	НовКоманда.Подсказка="Команда11";	
	
	НоваяКнопка = Форма.Элементы.Добавить("Команда1", Тип("КнопкаФормы"), Форма.КоманднаяПанель);	
	
	НоваяКнопка.Заголовок = "Открыть мисту";
КонецПроцедуры 


Ну и дальше в нужном модуле нужно сделать еще один inject

P.S.
Имхо только за последний месяц было несколько таких тем.
Чем там дело решилось - не помню, не интересовался
2 picom
 
20.06.25
08:40
(1) Надо без расширения формы
3 Мультук
 
гуру
20.06.25
09:16
(2)

Где я написал про расширение формы ?

== Цитата ==
По-моему нужно идти по пути использования типовой процедуры из модуля формы
== Конец цитаты ==

Я не знаю, что там в БСП УНФ. Возможно так "такого" нет.
4 picom
 
20.06.25
08:47
(3) В первой версии вашего сообщения этого не было...
Изучаю...
В УНФ действительно такого нет, ищу обход
5 Мультук
 
гуру
20.06.25
08:59
(4)

Поищите по Подключаемый_ВыполнитьКоманду по форуму, может быть найдете "те" темы, возможно в них уже есть решение.

Одна тема от "Maniac" (надеюсь я правильно помню ник)

P.S.
УНФ я в глаза не видел, увы.
Точнее видел, но...