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

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 1474 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];
	КонецЕсли;
КонецПроцедуры


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

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

Будут вопросы, милости просим)
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) вообще не меняет код модуля формы/модуля объекта. Естественно, если конфигурация с БСП.
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день