|
Как корректно программно вызвать обработчик события другой формы? | ☑ | ||
---|---|---|---|---|
0
napagokc
01.08.12
✎
12:34
|
В модуле формы, событие в которой хочу вызвать, добавил процедуру:
Процедура ВыполнитьИзвне(пВыражение) Экспорт Выполнить(пВыражение); КонецПроцедуры // ВыполнитьИзвне() Вызвать хочу событие "ПриВыбореТовара(Элемент)" В модуле совершенно другого объекта пишу: ДокФорма = Док.ПолучитьФорму(); //... пВыражение = "ПриВыбореТовара(" + ТутЧтоТоДолжноБыть + ")"; ДокФорма.ВыполнитьИзвне(пВыражение); Вот что должно быть, вместо "ТутЧтоТоДолжноБыть", поделитесь опытом? По отладчику там должно быть Поле ввода формы, событие которой я пытаюсь вызвать. Какой параметр я должен передать, чтобы все корректно работало? Сейчас пишет: Переменная не определена (ТутЧтоТоДолжноБыть) ПриВыбореТовара(<<?>>ТутЧтоТоДолжноБыть) Я так понимаю, что если это поле ввода в самом обработчике нигде не используется, то можно вообще левое поле ввода туда передать. Только не понял, как это сделать? Ну, и это, конечно, читерство, попытка выкрутиться из ситуации. Мне бы хотелось сделать грамотно, если уж задаю тут вопрос. Мистяне ведь знают ВСЁ. Даже 1С ))) |
|||
1
napagokc
01.08.12
✎
12:35
|
(0) Ах, да. 1С8.2
|
|||
2
alextom81
01.08.12
✎
12:39
|
Никак. (Если я правильно понял задачу) - На старте долго пытался программно добавить кнопки в формы - и уткнулся в то, что обработчик элемента формы должен быть прописан в самом модуле формы. Либо в модуле формы вызываться экспортная процедура из других модулей. Но обработчик - только в форме. Из модуля формы тебе будут доступны только экспортные процедуры и функции, насколько я понимаю
|
|||
3
napagokc
01.08.12
✎
12:45
|
(2) Так у меня все так и сделано.
Попробую пояснить более подробно на примере... Есть форма какого-то документа (условно: ДокФорма), там есть уже реализованные обработчики событий, в том числе и "ПриВыбореТовара(Элемент)". Я из модуля объекта совершенно другого объекта (простите за тавтологию) пытаюсь вызвать этот обработчик события. Для этих целей в модуле формы ДокФорма я создал экспортную процедуру "ВыполнитьИзвне(пВыражение)", которая, согласно справке, "Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения" (это описание к методу "Выполнить"). И все хорошо, но ругается на передаваемый параметр... Проблемы только с ним. |
|||
4
napagokc
01.08.12
✎
12:51
|
Я, как и написал в (0), считерил и подставил вместо параметра события "ПриВыбореТовара" просто левое поле ввода той же формы. Все отработало корректно, т.к. этот параметр внутри обработчика события нигде не использовался. Но все равно я понимаю, что я что-то не так сделал. Если кто-то все же знает как достучаться до нужного параметра, напишите, плз. Спасибо.
|
|||
5
anddro
01.08.12
✎
13:00
|
Оповестить() ?
|
|||
6
TormozIT
гуру
01.08.12
✎
13:02
|
Попробуй это http://infostart.ru/public/16985/
|
|||
7
Rovan
модератор
01.08.12
✎
13:07
|
(3) если у тебя в "ПриВыбореТовара(Элемент)".
сам Элемент роли не играет, то ТутЧтоТоДолжноБыть пусть = 0 |
|||
8
anddro
01.08.12
✎
13:10
|
(6) а вот это лишнее. В принципе путь, когда одна форма меняет непосредственно данные другой формы, это порочно, т.к. это потенциальный источник ошибок. Взаимодействие между формами реализуется через Оповестить() и ОбработкаОповещения.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |