Программно добавить кнопку с вызовом процедуры из общего модуля
Можно ли программно добавить на форму кнопку, которая вызывает процедуру и общего модуля?
В расширение добавил процедуру из общего модуля, которая вызывается из каждого документа. Добавил в неё вызов моей процедуры в моём общем модуле (тоже в расширении). В этой процедуре добавляю команду и кнопку на форме в командную панель. Кнопка добавляется. Команда добавляется. В действие прописываю ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле. Но она не срабатывает (отладчик не входит/не останавливается). ЧЯДНТ?
Просьба не налегать с вопросами зачем именно так. Дописывать в каждый из двухсот документов (в расширение) свою процедуру вапще не вариант.
В расширение добавил процедуру из общего модуля, которая вызывается из каждого документа. Добавил в неё вызов моей процедуры в моём общем модуле (тоже в расширении). В этой процедуре добавляю команду и кнопку на форме в командную панель. Кнопка добавляется. Команда добавляется. В действие прописываю ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле. Но она не срабатывает (отладчик не входит/не останавливается). ЧЯДНТ?
Просьба не налегать с вопросами зачем именно так. Дописывать в каждый из двухсот документов (в расширение) свою процедуру вапще не вариант.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) В расширении в процедуру, что в каждом документе вызывается при чтении добавил
В модуле ИмяОбщегоМодуля (добвлен в расширении) добавил процедуру
//#Вставка
Если Форма.ТолькоПросмотр Тогда
ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле(Форма);
КонецЕсли;
//#КонецВставки
В модуле ИмяОбщегоМодуля (добвлен в расширении) добавил процедуру
&НаКлиенте
Процедура ИмяЭкспортнойПроцедурыВМодуле(Форма) Экспорт
Команда =Форма.Команды.Добавить("МояКоманда");
Команда.Действие="ДействиеПоКнопке";
Кнопка =Форма.Элементы.Добавить("МояКнопка", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
Кнопка.Заголовок ="Моя кнопка";
Кнопка.ИмяКоманды ="МояКоманда";
КонецПроцедуры
&НаКлиенте
Процедура ДействиеПоКнопке(Команда) Экспорт
Ааааа=1;
КонецПроцедуры
Показать
(5)
На УФ в модуле документа:
//#Вставка
Если Форма.ТолькоПросмотр Тогда
ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле(Форма);
КонецЕсли;
//#КонецВставки
"Если Форма.ТолькоПросмотр Тогда" Тут Что отладчик говорит???
при чтении добавил
Это будет отрабатывать с ранее созданными и записанными доками.
На УФ в модуле документа:
//#Вставка
Если Форма.ТолькоПросмотр Тогда
ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле(Форма);
КонецЕсли;
//#КонецВставки
"Если Форма.ТолькоПросмотр Тогда" Тут Что отладчик говорит???
(5)
&НаКлиенте
Процедура ИмяЭкспортнойПроцедурыВМодуле(Форма) Экспорт
Команда =Форма.Команды.Добавить("МояКоманда");
//+++
Команда.Действие="ИмяОбщегоМодуля.ДействиеПоКнопке";
//+++
Кнопка =Форма.Элементы.Добавить("МояКнопка", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
Кнопка.Заголовок ="Моя кнопка";
Кнопка.ИмяКоманды ="МояКоманда";
//+++
//Тут раз уж необходимо вызвать действие команды из модуля программно и раз уж кнопка добавляется
Форма.ДействиеПоКнопке(Неопределено);
//+++
КонецПроцедуры
Показать
(1)
подключаемые команды чем не угодили
В расширение добавил процедуру из общего модуля, которая вызывается из каждого документа. Добавил в неё вызов моей процедуры в моём общем модуле (тоже в расширении). В этой процедуре добавляю команду и кнопку на форме в командную панель. Кнопка добавляется. Команда добавляется. В действие прописываю ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле.
подключаемые команды чем не угодили
&НаСервере //ЭТО РАБОТАТЬ БУДЕТ НА СЕРВЕРЕ
Процедура ИмяЭкспортнойПроцедурыВМодуле(Форма) Экспорт
Команда =Форма.Команды.Добавить("МояКоманда");
Команда.Действие="ДействиеПоКнопке";
Кнопка =Форма.Элементы.Добавить("МояКнопка", Тип("КнопкаФормы"), Форма.Элементы.ФормаКоманднаяПанель);
Кнопка.Заголовок ="Моя кнопка";
Кнопка.ИмяКоманды ="МояКоманда";
КонецПроцедуры
//СЮДА С СЕРВЕРА НИКАК НЕ ОБРАТИТЬСЯ
&НаКлиенте
Процедура ДействиеПоКнопке(Команда) Экспорт
Ааааа=1;
КонецПроцедуры
ПОЭТОМУ ЭТО НУЖНО ПРОПИСАТЬ ТАМ ГДЕ И
//#Вставка
Если Форма.ТолькоПросмотр Тогда
ИмяОбщегоМодуля.ИмяЭкспортнойПроцедурыВМодуле(Форма);
КонецЕсли;
//#КонецВставки
Показать
Никак. По крайней мере обходных путей кажется не найдено. При нажатии на кнопку происходит вызов метода именно текущего контекста, что-то вроде ЭтаФорма.МетодДействия(Элемент). Управление не передается даже на глобальные общие модули.
(15) Если решение типовое, то в большинстве случаев формы уже содержат однотипные методы с вызовом какого-то общего модуля. Что-то вроде
и для выполняемой команды достаточно передать управление на подобный метод. а в расширении дополнить общий методом с префиксом &Вместо с анализом переданного элемента. типа если подменяется, то своя логика, если нет, то передаем управление на стандарт
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
и для выполняемой команды достаточно передать управление на подобный метод. а в расширении дополнить общий методом с префиксом &Вместо с анализом переданного элемента. типа если подменяется, то своя логика, если нет, то передаем управление на стандарт
(17)
Это решение. Я могу расширить эту процедуру и добавить туда описание действий для моей команды.
Однако, как я понимаю, можно ничего не менять, а добавлять обработчики команд в систему. Однако я пока не понял как это делать. Если знаете как, подскажите пожалуйста.
Это решение. Я могу расширить эту процедуру и добавить туда описание действий для моей команды.
Однако, как я понимаю, можно ничего не менять, а добавлять обработчики команд в систему. Однако я пока не понял как это делать. Если знаете как, подскажите пожалуйста.
(16) Ну этим то я и воспользовался, чтоб по определённым критериям вывести кнопку расширив такую процедуру (ДатаЗапретаИзменения.ОбъектПриЧтенииНаСервере).
Теперь вот нужно, чтоб кнопка выполнила определённые действия, абсолютно одинаковые для всех документов.
Теперь вот нужно, чтоб кнопка выполнила определённые действия, абсолютно одинаковые для всех документов.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот