![]() |
![]() |
![]() |
|
Можно ли событию элемента формы назначить обработчик из внешнего модуля? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
12.11.07
✎
17:39
|
В РТФМе сказано, что вроде можно...
А как. Элемент.УстановитьДействие(<Событие>, Новый Действие("ОбщийМодуль1.Функция1") ) не прокатывает - пишет недопустимый символ (точка)? Как быть? Действие (Action) Действие (Action) Конструкторы: Основной Описание: Предназначен для получения действия, которое можно назначить в качестве обработчика события элемента управления или команды пользовательского интерфейса. Для обработки события может быть вызвана процедура или функция модуля формы, модуля приложения или общего модуля, имя которой задано в конструкторе. Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. Сериализуется. Пример: // В модуле описана процедура Сформировать(), выполнение которой // назначим кнопке "Сформировать" в качестве действия при нажатии ОбработкаНажатия = Новый Действие("Сформировать"); КнопкаСформировать = ЭлементыФормы.КнопкаСформировать; КнопкаСформировать.УстановитьДействие("Нажатие", ОбработкаНажатия); См. также: КнопкаКоманднойПанели, свойство Действие Расширение элементов управления, расположенных в форме, метод ПолучитьДействие Форма, метод ПолучитьДействие Форма, метод УстановитьДействие КнопкиКоманднойПанели, метод Добавить КнопкиКоманднойПанели, метод Вставить Расширение элементов управления, расположенных в форме, метод УстановитьДействие Форма, метод УстановитьДействие Расширение элементов управления, расположенных в табличном поле, метод ПолучитьДействие Расширение элементов управления принадлежащих табличному документу, метод ПолучитьДействие Расширение элементов управления, расположенных в табличном поле, метод УстановитьДействие Расширение элементов управления принадлежащих табличному документу, метод УстановитьДействие |
|||
1
ТелепатБот
гуру
12.11.07
✎
17:39
|
||||
2
перцептрон
12.11.07
✎
17:42
|
(0) значит убери точку и добавь к функции экспорт
|
|||
3
Гений 1С
гуру
12.11.07
✎
17:45
|
(2) точку убрал - пишет нет такой функции. Экспорт стоит, я же гений, а не чайник...
|
|||
4
TormozIT
гуру
12.11.07
✎
17:51
|
Гений, уже сто раз обсуждалось, не меньше)
НЕЛЬЗЯ |
|||
5
перцептрон
12.11.07
✎
17:54
|
(3) Попробуй ПолучитьДействие() нужной тебе формы
|
|||
6
TormozIT
гуру
12.11.07
✎
17:55
|
Выход один - полностью динамические формы, свой редактор форм.
Редактор сохраняет декларативное описание формы и обработчиков в служебный справочник. Движок форм - одна форму-болванка, где прописаны все возможные обработчики событий и из которой обработка событий будет следовать по настраиваемому пути. Идею я почти продумал, но времени на реализацию много уйдет. |
|||
7
TormozIT
гуру
12.11.07
✎
17:57
|
Но через год уже будет управляемое приложение и, если даже нельзя будет назначать внешние обработчики событий, то на порядок легче будет написать (6). Так что нечего рыпаться. Будем ждать...
|
|||
8
Гений 1С
гуру
12.11.07
✎
17:57
|
(6) Не, выходы есть и другие...
(4) я тоже думал нельзя, но ведь в РТФМ написано? или это только для интерфейсов можно? (5) Где бы взять такую форму? |
|||
9
TormozIT
гуру
12.11.07
✎
18:04
|
Логически мысля, -
У события ПриОткрытии формы нет параметров. Если такому событию назначить обработчик извне, то невозможно будет обратиться к контексту той формы, в которой возникло событие. Смысла нет в таком обработчике. |
|||
10
Гений 1С
гуру
12.11.07
✎
18:09
|
(9) Гыгыгы, а если первый параметр - контекст формы? Логика не прокатывает...
|
|||
11
Гений 1С
гуру
12.11.07
✎
18:10
|
надо бы на партнерском спросить... а то пишут РТФМы сам Нуралиев ногу сломит...
|
|||
12
TormozIT
гуру
12.11.07
✎
18:11
|
(10) Мы же ведем речь о текущей версии платформы.
Форма.ПриОткрытии (Form.OnOpen) Форма (Form) ПриОткрытии (OnOpen) Синтаксис: ПриОткрытии() Описание: Возникает при открытии формы, до показа окна пользователю. Примечание: В обработчике события отказаться от открытия формы нельзя. Здесь нет такого параметра |
|||
13
Гений 1С
гуру
12.11.07
✎
18:12
|
(12) Но это не значит, что его не может быть в обработчике, который в общем модуле. В общем понимаешь, меня смутило то что в РТФМ описано, что процедура может быть и в общем модуле, но думается, это касается только интерфейсов...
|
|||
14
TormozIT
гуру
12.11.07
✎
18:14
|
(13) Да, старая "фича" справки. Неоднозначность, которую приходится разрешать опытным путем.
|
|||
15
Гений 1С
гуру
12.11.07
✎
18:17
|
(14) Ну в данном случае фиг поймеш, как опытом проверить...
|
|||
16
Гений 1С
гуру
12.11.07
✎
18:17
|
разве что взять действие из пункта меню интерфейса...
|
|||
17
перцептрон
12.11.07
✎
18:20
|
(8) ОбщиеФормы?
Или тебе нельзя менять конфу? |
|||
18
Гений 1С
гуру
12.11.07
✎
18:22
|
(17) конфу менять то можно, я же хочу обработчик в общий модуль вставить, пофиг общая или не общая - не дает создать действие, как его создать то? По идее было бы логично, если бы действие можно было бы создать, Но нельзя было бы его назначить форме, а так я не могу его даже создать, во!
|
|||
19
Гений 1С
гуру
12.11.07
✎
18:26
|
Вот пишу:
Д=Новый Действие("ГУИД.обГУИДМаркерКартинокВHTML"); ГУИД.обГУИДМаркерКартинокВHTML - у меня есть такая функция без параметров, экспорт пишет: неверное имя процедуры! Имя процедуры должно состоять из одного слова, начинаться с буквы и не одержать специальных символов, кроме _ |
|||
20
Гений 1С
гуру
12.11.07
✎
18:31
|
Все, фишку просек.
Пишу: Д=Новый Действие("обГУИДМаркерКартинокВHTML"); Работает. Далее пишу: ЭтаФорма.УстановитьДействие("ПриЗакрытии", Д); Пишет: Недопустимое значение параметра 2 (в модуле формы отсутствует процедура с таким именем). Отсюда мораль - сабж невозможен, мдя.... |
|||
21
перцептрон
12.11.07
✎
18:39
|
(18) я думаю Действие() можно создать только из набора процедур текущего контекста (того в котором пытаешься создать)
|
|||
22
Валерыч
13.11.07
✎
02:33
|
судя по точкам в ссылках на процедуры:
а) платформыа 8.1 б) общий модуль не является глобальным Я еще не телепат но учусь :))) а не пробовал объявить общий модуль глобальным? |
|||
23
Гений 1С
гуру
13.11.07
✎
10:09
|
(21) Нет, как видишь, действие можно создать и со ссылкой на глобальную процедуру.
(22) А что это меняет? Я могу создать любое действие, но при попытке его назначить форме мне выдается ошибка - в форме нет процедуры с таким именем, что явно намекает на то, что обработчик событий должен быть в форме (8.1) |
|||
24
перцептрон
13.11.07
✎
13:11
|
(23) да, но назначить его другому контексту не получилось
|
|||
25
asady
13.11.07
✎
13:39
|
(6) +1 полностью согласен.
будущее за динамическим интерфейсом. у меня даже заготовочка есть - пытался создать конфу с полностью динамическими формами - но блин времени на эту самодеятельность нет катастрофически - а на работе такое не приветствуют им результат подавай. |
|||
26
Гений 1С
гуру
13.11.07
✎
13:46
|
(25) А у меня по крайней мере вложенные формы УЖЕ работают. ;-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |