Как можно добавить свою команду в стандартную форму "Основная форма отчета"

1. zavbak 29.01.19 12:05 Сейчас в теме
Добрый день.

Хочу не влезаю в конфигурацию добавить свою команду в основную форму отчета из модуля внешнего отчета.

Интерфейс править могу. Могу назначить свою команду.
А как подставить обработчик команды не влезая в форму не знаю.

В отчете только компановка. Формы нет.



// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
//
// Параметры:
//   Форма - УправляемаяФорма - Форма отчета.
//   Отказ - Передается из параметров обработчика "как есть".
//   СтандартнаяОбработка - Передается из параметров обработчика "как есть".
//
// См. также:
//   "УправляемаяФорма.ПриСозданииНаСервере" в синтакс-помощнике.
//
Процедура ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт
	
	Параметры = ЭтаФорма.Параметры;
	КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
	
	Если Параметры.Свойство("ПараметрКоманды")
			И Параметры.Свойство("ОписаниеКоманды")
			И Параметры.ОписаниеКоманды.Свойство("ДополнительныеПараметры") Тогда 
		
		СформироватьПараметрыОтчета(Параметры.ПараметрКоманды, ЭтаФорма.ФормаПараметры, Параметры);
			
	КонецЕсли;
	
	ЭтаФорма.Команды.ОтправитьПоПочте.Действие = "Подключаемый_Команда";  //Изменил на свою команду
	
	
	

	
КонецПроцедуры

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dandykry 11 29.01.19 12:12 Сейчас в теме
(1)
Так пробовали? Я не совсем знаю, что уже сделано в других событиях

ОтчетыСервер.ВывестиКоманду(ФормаОтчета, КомандаИлиКоманды, ТипГруппы, ВНачалоГруппы, ТолькоВоВсехДействиях, СуффиксПодгруппы)

Документация:
https://its.1c.ru/db/bsp302doc#content:2615:hdoc

https://its.1c.ru/db/bsp302doc#content:23:1:issogl2_установить_настройки_формы_отчета
native-api; +1 Ответить
3. user633533_encantado 11 29.01.19 12:13 Сейчас в теме
Никак. Код команды должен быть в модуле формы.
4. dandykry 11 29.01.19 12:13 Сейчас в теме
5. user633533_encantado 11 29.01.19 12:15 Сейчас в теме
(4) Ок, просветите меня, как на форму добавить свою команду программно ничего не меняя в модуле формы ? Не просто кнопку, а команду.
6. dandykry 11 29.01.19 12:16 Сейчас в теме
(5)

Просвещаю из документации. Жирным выделено нужное вам

ВывестиКоманду
Выводит команду в форму отчета в виде кнопки в указанную группу.
Также регистрирует команду, защищая ее от удаления при перерисовке формы.
Для вызова из события ПриСозданииНаСервере формы отчета.
Синтаксис

Процедура ВывестиКоманду(ФормаОтчета, КомандаИлиКоманды, ТипГруппы, ВНачалоГруппы = Ложь, ТолькоВоВсехДействиях = Ложь,
СуффиксПодгруппы = "") Экспорт
Параметры

ФормаОтчета - УправляемаяФорма - форма отчета, в которую добавляется команда.
КомандаИлиКоманды - КомандаФормы - команда, с которой будут связаны выводимые кнопки.
Если в свойстве Действие указана пустая строка,
то при выполнении команды будет вызвана процедура ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
Если в свойстве Действие указана строка вида "<ИмяКлиентскогоОбщегоМодуля>.<ИмяЭкспортнойПроцедуры>",
то при выполнении команды в указанном модуле будет вызвана указанная процедура с двумя параметрами,
аналогичным двум первым параметрам процедуры ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
- Массив - набор команд (КомандаФормы), которые будут выведены в указанную группу.
ТипГруппы - Строка - условное имя группы, в которой требуется вывести кнопку.
"Главное" - группа с кнопками "Сформировать" и "Формировать сразу".
"Настройки" - группа с кнопками "Настройки", "Изменить вариант отчета" и т.п.
"РаботаСТабличнымДокументом" - группа с кнопками "Найти", "Развернуть все группы" и т.п.
"Интеграция" - группа такими кнопками как "Печать, Сохранить, Отправить" и т.п.
"ПодменюОтправить" - подменю в группе "Интеграция" для отправки по почте.
"Прочее" - группа с кнопками "Изменить форму", "Справка" и т.п.
ВНачалоГруппы - Булево - если Истина, то кнопка будет выведена в начале группы. Иначе в конце группы.
ТолькоВоВсехДействиях - Булево - если Истина, то кнопка будет выведена только в подменю "Еще".
Иначе и в подменю "Еще", и в командной панели формы.
СуффиксПодгруппы - Строка - если заполнен, то команды будут объединены в подгруппу.
СуффиксПодгруппы добавляется к имени группы справа.
Пример вызова

ОтчетыСервер.ВывестиКоманду(ФормаОтчета, КомандаИлиКоманды, ТипГруппы, ВНачалоГруппы, ТолькоВоВсехДействиях, СуффиксПодгруппы)
7. user633533_encantado 11 29.01.19 12:20 Сейчас в теме
(6) А , это когда разработчики предусмотрели, что ты будешь свои команды добавлять. Так не интересно.
8. dandykry 11 29.01.19 12:22 Сейчас в теме
(7) А тут о чем спрашивают?

ТС даже событие ПриСозданииНаСервере из модуля объекта привел.
9. dhurricane 29.01.19 12:36 Сейчас в теме
(8) Подскажите мне, пожалуйста, для общего образования. Можно ли каким-либо образом определить свой обработчик команды для внешней формы? Сам я не смог разобраться.
10. dandykry 11 29.01.19 12:54 Сейчас в теме
(9) Прямо нельзя.
Косвенно через пень колоду....теоретически возможно.....

Лучше плясать от задачи. Что нужно сделать?
11. dhurricane 29.01.19 13:00 Сейчас в теме
(10) Задачи нет, для общего развития. Возможно ли для внешнего отчета в модуле объекта описать создание своей команды на форме и там же, в модуле объекта, реализовать обработчик команды? Или же каким-либо финтом реализовать обработчик своей команды в неосновной форме обработки. Главное условие: без доработки конфигурации, без использования собственной формы отчета, весь код только во внешней обработке.
12. dandykry 11 29.01.19 13:16 Сейчас в теме
(11)
в модуле объекта, реализовать обработчик команды?


нет


Или же каким-либо финтом реализовать обработчик своей команды в неосновной форме обработки


Я сам не пробовал, потому что это извращение. Просто делал расширение (в нем 1 модуль ОтчетыКлиентПереопределяемый или СобытияФормКлиент нужно заимствовать и там все прописать)

Можно сделать не команду а гиперссылку. В гиперссылке написать навигационную ссылку на внешнюю обработку с типов "ВызовКлиентскогоМетода" или "открытиеФормы"и в этой команде выполнять. Но это кощунство
15. dhurricane 29.01.19 13:20 Сейчас в теме
(12) Ну в общем-то это извращение ровно потому, что нет для этого программного интерфейса от разработчиков БСП. Такого, например, как есть в подключаемых обработках заполнения объектов.
Спасибо.
16. dandykry 11 29.01.19 13:23 Сейчас в теме
(15) Согласен. Проще всего сделать расширением. В нем Отчет, ОбщийМодуль и даже можно красиво в интерфейсе разместить если другие переопределяемые модули затронуть.

Тут вопросы для общего развития)))
13. zavbak 29.01.19 13:17 Сейчас в теме
(6)
Если в свойстве Действие указана строка вида "<ИмяКлиентскогоОбщегоМодуля>.<ИмяЭкспортнойПроцедуры>"


А может существует процедура БСП в Клиентском модуле которая вызывает процедуру из внешней обработки при передачи определенных параметров?
14. dandykry 11 29.01.19 13:19 Сейчас в теме
(13) Существует. ВыполнитьМетодКонфигурации или ВыполнитьМетодОбъекта. Так же можно что-то выполнить в фоне из внешней обработки.
Что-то выполнить не проблема. Проблема в том, что будет стоять в Действии у команды
17. zavbak 29.01.19 13:36 Сейчас в теме
(14)
ВыполнитьМетодОбъекта


Наверно не смогу ее указать как обработчик комманды

Процедура ВыполнитьМетодОбъекта(Знач Объект, Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт


Параметры не передам в команду
18. dandykry 11 29.01.19 14:08 Сейчас в теме
(17) неа) Одной внешкой у вас не получится сделать.
Кроме как изворачиваться навигационными ссылками я не вижу способа. И то не факт.
Revachol; +1 Ответить
19. zavbak 29.01.19 14:58 Сейчас в теме
Мое мнение это не доработка БСП. Я могу добавить кнопку. А обработчик нажатия только из конфы.

Да вы правы можно сделать расширение и т.д. Но хотелось красиво.

Вот и с испрашивал. До этого много капал.

По всеобщему мнению говорим НЕЛЬЗЯ. А ЖАЛЬ!
Оставьте свое сообщение

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