Как узнать событие происходящее на форме другого объекта

1. ovadia 18.10.19 12:01 Сейчас в теме
Есть две формы разных объектов. Форма_1 -- это ФормаСписка. На Форме_2 происходит событие (в серверной процедуре), которое порождает запись элемента ФормыСписка методом Объект.МойОбъект.Создать();.

Подскажите, пожалуйста, как Форма_1 может узнать об этом?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. wertep 23 18.10.19 15:04 Сейчас в теме
Ну раз вы уперлись рогом в серверную процедуру, то разжуем.
(1)
На Форме_2 происходит событие (в серверной процедуре)

На форме могут быть как серверные, так и клиентские процедуры.

(4)
Если, требуется выполнить какие-то дествия в ФормеСписка, после создания объекта, то в форме2 вызываетет "Оповестить(, , ) ", а в Форме1 в процедуре "ОбработкаОповещения" выполнить нужные действия

(6)
(4) Это не работает на сервере!

Так тоже не работает?
&НаСервере
Процедура ОченьСерверная(Параметры)

    // Что-то она делает

    // И тут происходит жуткое событие
    ПульнутьОповещение(ЧеПроисходит, СКемПроисходит);

КонецПроцедуры

&НаКлиенте
Процедура ПульнутьОповещение(ЧеПроисходит, СКемПроисходит)
    Оповестить(ЧеПроисходит, СКемПроисходит, ЭтаФорма);
КонецПроцедуры
Показать
17. ovadia 19.10.19 10:06 Сейчас в теме
(14)
Так тоже не работает?


Так не работает. Ошибка: Процедура или функция с указанным именем не определена (проверка: сервер)
20. wertep 23 19.10.19 15:18 Сейчас в теме
(17)
Так не работает.

Ну тогда как и предлагали в (10).
&НаКлиенте
Процедура НажалиКнопкуНаФорме(Команда)
    ОченьСерверная(Параметры, ЧтоТоПроизошло);

    Если ЧтоТопроизошло.Произошло Тогда
        Оповестить(ЧтоТопроизошло.ЧеПроисходит, ЧтоТопроизошло.СКемПроисходит, ЭтаФорма);
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ОченьСерверная(Параметры)

    ЧтоТопроизошло.Произошло = Ложь;

    // Что-то она делает

    // И тут происходит жуткое событие
    ЧтоТопроизошло.Произошло = Истина;
    ЧтоТопроизошло.ЧеПроисходит = ЧеПроизошло;
    ЧтоТопроизошло.СКемПроисходит = СКемПроизошло;

КонецПроцедуры
Показать
2. magvay_k 63 18.10.19 12:06 Сейчас в теме
Динамичекие списки открытых форм можно обновить через "ОповеститьОбИзменении".
3. AlexandrSmith 69 18.10.19 12:07 Сейчас в теме
5. ovadia 18.10.19 12:09 Сейчас в теме
(2)
через "ОповеститьОбИзменении"


НаСервере не работает!
7. magvay_k 63 18.10.19 12:11 Сейчас в теме
(5) Все верно. Работа с формой происходит на клиенте. На сервер она передается в контексте.
4. magvay_k 63 18.10.19 12:09 Сейчас в теме
Если, требуется выполнить какие-то дествия в ФормеСписка, после создания объекта, то в форме2 вызываетет "Оповестить(<ИмяСобытия>, <Параметр>, <Источник>) ", а в Форме1 в процедуре "ОбработкаОповещения" выполнить нужные действия
6. ovadia 18.10.19 12:10 Сейчас в теме
(4) Это не работает на сервере!
8. magvay_k 63 18.10.19 12:11 Сейчас в теме
Чего вы конкретнее хотите?
9. ovadia 18.10.19 12:14 Сейчас в теме
(8) Так я же написал, что у меня в процедуре на сервере (!) создается элемент списка другого объекта. Мне нужно, чтобы форма списка узнала об этом.
10. antz 18.10.19 12:18 Сейчас в теме
(9) Процедура на сервере вызывается из клиентской процедуры? И по окончании управление передается опять на клиент? Так ведь?
11. magvay_k 63 18.10.19 12:19 Сейчас в теме
В ФормеСписка, у элемента Динамического спикска, установи флаг автообновление и интервал, она сама через время обновит.
12. ovadia 18.10.19 12:21 Сейчас в теме
(11) Попробую. Но это часть решения, мне не только обновлять список нужно, но и отлавливать создание элемента списка, чтобы потом выводить разные реквизиты, в зависимости от вида создаваемого элемента.
13. ovadia 18.10.19 12:30 Сейчас в теме
(11) Не совсем то, что нужно. Мерцание списка не вариант.
15. antz 18.10.19 15:06 Сейчас в теме
16. wertep 23 18.10.19 15:06 Сейчас в теме
(15)
А ответьте на

Он не понял наводки.
18. starjevschik 19.10.19 11:52 Сейчас в теме
Правильно будет так (на форме2)

&НаКлиенте
Процедура ВыполнитьНужнуюОбработку()
Ответ = ВыполнитьНужнуюОбработкуНаСервере();
Если Ответ = ВсеОК Тогда
Оповестить(ЧеПроисходит, СКемПроисходит, ЭтаФорма);
КонецЕсли;
КонецПроцедуры
19. ovadia 19.10.19 13:31 Сейчас в теме
(18)
Правильно будет так (на форме2)


Скорее всего так не правильно. Так как у меня серверная процедура -- это стандартная процедура обработки записи на сервере ПриЗаписиНаСервере().

Я уже нашел решение, добавив НаКлиенте процедуру ПослеЗаписи() и в ней уже Оповестить().
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот