Как через УстановитьДействие() использовать процедуру общего модуля? #403407


#0 by Said_We
Как в качестве обработчика действия через УстановитьДействие можно установить свой обработчик для элемента формы. Если эта процедура должна быть расположена в модуле формы, то это не интересно, так как в каждой форме надо плодить всякие обработчики. При этом из модуля формы видно процедуры общих глобальных (точку в имени обработчика нельзя использовать) модулей, а в качестве обработчиков событий их назначить нельзя. УстановитьДействие(<Событие>, <Действие>) Примечание: Процедура должна быть экспортируемой и располагаться в модуле формы, при этом количество параметров должно совпадать с необходимым количеством параметров события, инициирующего вызов действия. Описание: Предназначен для получения действия, которое можно назначить в качестве обработчика события элемента управления или команды пользовательского интерфейса. Для обработки события может быть вызвана процедура или функция модуля формы, модуля приложения или общего модуля, имя которой задано в конструкторе. А в вот в качестве обработчика события почему нельзя? Её же (процедуру) видно из модуля формы. Видил как Гений1С встраивает формы одну в другую, но в данном случае это на крайний случий. Кто с этим боролся, как и каков результ?
#1 by ТелепатБот
#2 by Said_We
По всей видимости невозможно. :-(
#3 by dk
в 8-ке не шибко курю, но я бы сделал локальные процедуры и уже из них вызвал процедуры из общих модулей
#4 by Said_We
И так в каждой форме по каждому реквизиту - это же скучно. Идея в том что бы при открытии формы прописать вызов одной процедуры общего модуля и она все события ко всем реквизитам привяжет. Жаль что сами события должны быть в модуле самой формы и нельзя использовать процедуры общих модулей пусть даже глобальных.
#5 by Defender aka LINN
И правильно. Скопируешь форму в другую конфу и привет, нифига не работает.
#6 by Said_We
Не понял чего не работает?
#7 by Said_We
Если разные конфигурации, то чего бы она работала бы.
#8 by НЕА123
+ и сообщений об ошибке не было.
#9 by Said_We
У вас есть куча выших форм, для ваших же документов. В этих документах есть набор реквизитов одинаковый (к сожалению нет общих реквизитов в 8.х). Берешь с одной формы копируешь необходимые реквизиты и одну строчку в событие перед открытием с вызовом процедуры из общего модуля. Эта процедура прописывает все необходимые события для элемента формы. И не надо было бы добавлять кучу одинаковых строчек ловушек событий для каждого элемента в каждой форме. В общем я поня ничего подобного в 8.х невозможно сделать.
#10 by Said_We
Задача совсем не стоит в копировании из одной конфигурации в другую. Все происходит в одной и той же конфигурации. Просто добивает рисовать кучу строчек одних и тех же во все формы. А сми строчки состоят из процедур в которых по одной строчке вызова процедуры общего модуля.
#11 by DmitrO
Said_We, согласен на 100% Модуль формы превращается в мерзкую дрянь из локальных обработчиков вызывающих процедуры общего модуля. У 1С этот вопрос очень не проработан, это печально. Имхо возможность обработки событий в общих модулях можно было с легкостью устроить, однако вместе с этим надо чтобы каждый ЭУ имел свойство Родитель чтобы можно было получить экземпляр формы, или ТП, или ТД, и т.п.
#12 by Said_We
Зачем ЭУ (элементу управления) иметь свойство родитель? Зачем получать экземпляр формы? Достаточно перед открытием формы было бы прописать события к элементам и все. Если события случаенно разные для одного и того же по наименованию элемента формы но в разных формах, то можно привязать разные событийные процедуры или по разному называть реквизиты. Если реквизиты по сути разные, то называть надо их по разному (одинаковые должны вести себя одинаково) или ... я думаю что много разных вариантов можно придумать. Смысл в чем при привязке к событию процедура ищется только в модуле формы. Жаль что нельзя передать в событийную процедуру имя самого события. Можно было бы нарисовать мультиплексную процедуру ко всем элементам, которая бы перенаправляла бы на нужную процедуру. Т.е. не много разных объявлять, а одну в которой одна строчка вызова процедуры общего модуля. А в процедуре перед открытием назначать на эту мультиплексную процедуру модуля формы натравливать все необходимые события всех необходимых реквизитов. Ну вот такой бы изврат можно было бы придумать, но имя события не получишь. Т.е. единственное что отработает, так это одна процедура на каждое событие для всех необходимых элементов. По имени элемента соответственно свой конечный обработчик. Т.е. не одна мультиплексная процедура, а столько сколько вариантов событий (ПриИзменении, При..).
#13 by DmitrO
Свойство Родитель нужно потому, что часто для обработки события нужны объекты формы, значения других ее элементов (или в случае с ТП, например нужны данные текущей строки), в случае общей процедуры обработчика события эти данные получить из параметров процедуры-обработчика не возможно.
#14 by Said_We
Согласен, иногда нужно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С