Можно ли добавить кнопку на управляемую форму в типовой конфигурации не затрагивая модуль формы?
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) Старая тема, но вижу до конца не раскрыта.
Смотря какие БСП у типовой конфигурации.
Например в ERP, там в формах уже натыканы, процедуры вызова модулей,для модификации конфигурации.
В которых можно почти все что угодно делать с формой. При этом непосредственно ни форма объекта, ни модуль формы объекта не будет затронут.
Затрагиваться будет только общий модуль. Но для того он там и сделан.
Смотря какие БСП у типовой конфигурации.
Например в ERP, там в формах уже натыканы, процедуры вызова модулей,для модификации конфигурации.
В которых можно почти все что угодно делать с формой. При этом непосредственно ни форма объекта, ни модуль формы объекта не будет затронут.
Затрагиваться будет только общий модуль. Но для того он там и сделан.
(1) если есть БСП.
То для этого есть дополнительные обработки в режиме заполнения формы.
Если хочется в любом месте, то снять замок и программно добавить кнопку, вклинившить в процедуру БСП при создании на сервере, которая может перенаправлять на ваш новый модуль.
То для этого есть дополнительные обработки в режиме заполнения формы.
Если хочется в любом месте, то снять замок и программно добавить кнопку, вклинившить в процедуру БСП при создании на сервере, которая может перенаправлять на ваш новый модуль.
(12)
Сделайте обработку, в модуле формы напишите:
В модуле формы обработки:
А дальше, дальше... делайте что хотите)
Итог: никаких изменений в конфигурацию не вноситься.
Будут вопросы, милости просим)
нужна кнопка в документе, и по её нажатию передать ссылку текущего документа, и передать её в новую свою открытую форму
Сделайте обработку, в модуле формы напишите:
#Область ПодключениеИнтерфейса
Функция СведенияОВнешнейОбработке() Экспорт
#Область Формирование_Таблицы_Команд
Команды = ПолучитьТаблицуКоманд();
ДобавитьКоманду(Команды,
"Обработка", // представление для пользователя
"Обработка", // Наименование макет печатной формы
"ОткрытиеФормы", // указание использования серверного метода
Истина, // ПоказыватьОповещение
); // Модификатор формы, для печатных форм "ПечатьMXL"
#КонецОбласти
#Область Формирование_Массива_Назначений
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ОтражениеЗарплатыВБухучете");
#КонецОбласти
#Область ПараметрыРегистрацииОбработки
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Наименование", "Обработка");
ПараметрыРегистрации.Вставить("Информация", "Информация");
Параметрырегистрации.Вставить("Команды", Команды);
#КонецОбласти
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти
ПоказатьВ модуле формы обработки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("ОбъектыНазначения") Тогда
РеквизитФормы = Параметры.ОбъектыНазначения[0];
КонецЕсли;
КонецПроцедуры
А дальше, дальше... делайте что хотите)
Итог: никаких изменений в конфигурацию не вноситься.
Будут вопросы, милости просим)
(18)
Сделайте обработку, в модуле формы напишите:
В модуле формы обработки:
"в модуле формы" и "В модуле формы обработки" - не одно и тоже?
Описание отличное, но
не
Сделайте обработку, в модуле формы напишите:
а
Сделайте обработку, в модуле объекта напишите
Сделайте обработку, в модуле формы напишите:
В модуле формы обработки:
"в модуле формы" и "В модуле формы обработки" - не одно и тоже?
Описание отличное, но
не
Сделайте обработку, в модуле формы напишите:
а
Сделайте обработку, в модуле объекта напишите
Чтобы не было проблем при обновлении конфигурации форму менять не желательно, а изменение модуля формы практически ничему не мешает. В модуле формы команду и кнопку можно создать динамически:
МояКоманда = ЭтаФорма.Команды.Добавить("МояКоманда");
МояКоманда.Действие = "ДействияФормыМояКоманда";
МояКоманда.Заголовок = "Моя команда";
МояКнопка = Элементы.Добавить("МояКнопка",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);
МояКнопка.ИмяКоманды = "МояКоманда";
МояКоманда = ЭтаФорма.Команды.Добавить("МояКоманда");
МояКоманда.Действие = "ДействияФормыМояКоманда";
МояКоманда.Заголовок = "Моя команда";
МояКнопка = Элементы.Добавить("МояКнопка",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);
МояКнопка.ИмяКоманды = "МояКоманда";
Мешает не больше, чем все остальные предложения. Затрагивается только одна типовая процедура:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
в которую нужно добавить 1 (одну) строчку - вызов своей процедуры СоздатьЭлементыФормыНаСервере();
Нужно еще написать обработчик
&НаКлиенте
Процедура ДействияФормыМояКоманда()
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
в которую нужно добавить 1 (одну) строчку - вызов своей процедуры СоздатьЭлементыФормыНаСервере();
Нужно еще написать обработчик
&НаКлиенте
Процедура ДействияФормыМояКоманда()
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)