Можно ли добавить кнопку на управляемую форму в типовой конфигурации не затрагивая модуль формы?

1. burni4 87 08.12.17 15:38 Сейчас в теме
Можно ли добавить кнопку и при её нажатии выполнять свои функции на управляемую форму в типовой конфигурации, не затрагивая модуль формы? Если да, то как?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ryutao 50 08.12.17 15:44 Сейчас в теме
(1) использовать расширения, здесь есть статьи на эту тему
+
4. burni4 87 08.12.17 15:47 Сейчас в теме
(2) а по мимо расширения?
+
5. ryutao 50 08.12.17 15:48 Сейчас в теме
(4) все остальные решения потребуют снятия с поддержки типовой
+
6. azali 08.12.17 15:48 Сейчас в теме
(5)Так можно вывести глобальную команду (общая команда),
+
7. ryutao 50 08.12.17 15:50 Сейчас в теме
(6) как добавить глобальную команду, не снимая с поддержки?
+
9. azali 08.12.17 15:59 Сейчас в теме
(7) Глобальная, если не хотят вносить изменения в модуль формы.
А так
помимо расширения
может только внешняя обработка .
+
10. burni4 87 08.12.17 16:08 Сейчас в теме
(5) Конфигурация на поддержке с возможностью редактирования, значит варианты увеличиваются?
+
15. Diagnostiks 17 11.12.17 14:54 Сейчас в теме
(1)Подключить внешнюю обработку по правилам БСП с видом "ЗаполнениеОбъекта". Модификатор - "ОткрытиеФормы"
+
24. Boneman 298 09.10.18 13:05 Сейчас в теме
(1) Старая тема, но вижу до конца не раскрыта.
Смотря какие БСП у типовой конфигурации.
Например в ERP, там в формах уже натыканы, процедуры вызова модулей,для модификации конфигурации.
В которых можно почти все что угодно делать с формой. При этом непосредственно ни форма объекта, ни модуль формы объекта не будет затронут.
Затрагиваться будет только общий модуль. Но для того он там и сделан.
DataReducer; +1
25. Xershi 1483 09.10.18 13:30 Сейчас в теме
(1) если есть БСП.
То для этого есть дополнительные обработки в режиме заполнения формы.
Если хочется в любом месте, то снять замок и программно добавить кнопку, вклинившить в процедуру БСП при создании на сервере, которая может перенаправлять на ваш новый модуль.
+
3. maks_20 164 08.12.17 15:44 Сейчас в теме
Можно, используя механизм расширения
+
8. dkonakov 10 08.12.17 15:52 Сейчас в теме
Только через механизм расширения.
+
11. Skill 08.12.17 16:11 Сейчас в теме
(1) Что будет выполняться при нажатии? Можно попробовать обработки табличных частей, ну или внешние обработки/отчеты.
+
12. burni4 87 08.12.17 16:43 Сейчас в теме
(11) нужна кнопка в документе, и по её нажатию передать ссылку текущего документа, и передать её в новую свою открытую форму
+
18. Diagnostiks 17 11.12.17 15:39 Сейчас в теме
(12)
нужна кнопка в документе, и по её нажатию передать ссылку текущего документа, и передать её в новую свою открытую форму


Сделайте обработку, в модуле формы напишите:
#Область ПодключениеИнтерфейса
Функция СведенияОВнешнейОбработке() Экспорт
	#Область Формирование_Таблицы_Команд
	Команды = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(Команды, 
					"Обработка", // представление для пользователя 
					"Обработка", // Наименование макет печатной формы 
					"ОткрытиеФормы", // указание использования серверного метода
					Истина, // ПоказыватьОповещение 
					); // Модификатор формы, для печатных форм "ПечатьMXL"
	#КонецОбласти
	
	#Область Формирование_Массива_Назначений
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.ОтражениеЗарплатыВБухучете");
	#КонецОбласти
	                                                                  
	#Область ПараметрыРегистрацииОбработки
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("Наименование", "Обработка");
	ПараметрыРегистрации.Вставить("Информация", "Информация");
	Параметрырегистрации.Вставить("Команды", Команды);
	#КонецОбласти

	Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")	
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление; 
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;	
КонецПроцедуры	
#КонецОбласти
Показать


В модуле формы обработки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Параметры.Свойство("ОбъектыНазначения") Тогда
		РеквизитФормы = Параметры.ОбъектыНазначения[0];
	КонецЕсли;
КонецПроцедуры


А дальше, дальше... делайте что хотите)

Итог: никаких изменений в конфигурацию не вноситься.

Будут вопросы, милости просим)
acanta; +1
22. Darkoder 09.10.18 09:46 Сейчас в теме
(18)
Сделайте обработку, в модуле формы напишите:
В модуле формы обработки:

"в модуле формы" и "В модуле формы обработки" - не одно и тоже?

Описание отличное, но
не
Сделайте обработку, в модуле формы напишите:
а
Сделайте обработку, в модуле объекта напишите
Diagnostiks; +1
23. Diagnostiks 17 09.10.18 13:00 Сейчас в теме
(22) Точно, торопился когда писал) Спасибо за замечание)
+
14. burni4 87 11.12.17 14:38 Сейчас в теме
(11) вопрос остается открытым
+
13. burni4 87 08.12.17 16:47 Сейчас в теме
я так понял нужно решать проблему ОбщейКомандой, вопрос, как её закинуть на нужную форму не внося изменений в форму?
+
16. azali 11.12.17 15:22 Сейчас в теме
(13)
Раньше, вы упоминали что не хотите менять модуль формы, теперь уже и саму форму.

не пробовали в свойствах этой команды подобрать какую-нибудь подходящую группу

А так, остается только внешняя обработка.
+
17. VZyryanov 11.12.17 15:32 Сейчас в теме
Чтобы не было проблем при обновлении конфигурации форму менять не желательно, а изменение модуля формы практически ничему не мешает. В модуле формы команду и кнопку можно создать динамически:
МояКоманда = ЭтаФорма.Команды.Добавить("МояКоманда");
МояКоманда.Действие = "ДействияФормыМояКоманда";
МояКоманда.Заголовок = "Моя команда";

МояКнопка = Элементы.Добавить("МояКнопка",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);
МояКнопка.ИмяКоманды = "МояКоманда";
+
19. Diagnostiks 17 11.12.17 15:44 Сейчас в теме
(17)
а изменение модуля формы практически ничему не мешает

Зря Вы так, как раз таки мешает для нормального обновления.
+
20. VZyryanov 11.12.17 15:58 Сейчас в теме
Мешает не больше, чем все остальные предложения. Затрагивается только одна типовая процедура:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
в которую нужно добавить 1 (одну) строчку - вызов своей процедуры СоздатьЭлементыФормыНаСервере();

Нужно еще написать обработчик
&НаКлиенте
Процедура ДействияФормыМояКоманда()
+
21. Diagnostiks 17 11.12.17 16:01 Сейчас в теме
(20) Предложение в (18) вообще не меняет код модуля формы/модуля объекта. Естественно, если конфигурация с БСП.
+
Внимание! Тема сдана в архив

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