|   |   | 
| 
 | Как корректно программно вызвать обработчик события другой формы? | ☑ | ||
|---|---|---|---|---|
| 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) а вот это лишнее. В принципе путь, когда одна форма меняет непосредственно данные другой формы, это порочно, т.к. это потенциальный источник ошибок. Взаимодействие между формами реализуется через Оповестить() и ОбработкаОповещения.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |