Вход | Регистрация
 

Программно создать событие ПриСозданииНаСервере?

Программно создать событие ПриСозданииНаСервере?
Я
   spiller26
 
21.04.21 - 15:29
Есть форма "ФормаГруппы" справочника "ВидыВходящихДокументов"
Нужно программно создать событие для этой формы. В модуле формы пусто, расширение не предлагать.
   RomanYS
 
1 - 21.04.21 - 15:33
Программно можно назначить обработчик (вроде УстановитьДействие). Что значит "программно создать" не очень понятно
   spiller26
 
2 - 21.04.21 - 15:36
(1) Ну да установить УстановитьДействие, вот так примерно.
ЭтаФорма.УстановитьДействие("ПриСозданииНаСервере", "ПриСозданииНаСервере");
   RomanYS
 
3 - 21.04.21 - 15:37
(2) И.. вопрос закрыт?
   spiller26
 
4 - 21.04.21 - 15:39
(2) где прописывать в модуле?
   butterbean
 
5 - 21.04.21 - 15:40
(4) где угодно, главное чтобы выполнялось на сервере
   spiller26
 
6 - 21.04.21 - 15:41
(5) Т.е. само подтянется?
   spiller26
 
7 - 21.04.21 - 15:47
Короче сделал так. правильно-неправильно решать не мне, но работает.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭлементОрг = Элементы.Добавить("абтОрганизацияПравообладатель", Тип("ПолеФормы"),);
    ЭлементОрг.Вид = ВидПоляФормы.ПолеВвода;
    ЭлементОрг.ПутьКДанным = "Объект.абтОрганизацияПравообладатель";
    ЭлементОрг.РастягиватьПоГоризонтали = Истина;
    ЭлементОрг.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
    ЭлементОрг.КнопкаОчистки = Истина;
    ЭлементОрг.ЦветТекстаЗаголовка = Новый Цвет(255,140,0);
КонецПроцедуры

Попытка
    УстановитьДействие("ПриСозданииНаСервере", "ПриСозданииНаСервере");
Исключение
КонецПопытки;
   spiller26
 
8 - 21.04.21 - 15:48
(7) Попытку сделал, т.к. проходя клиента, начинает ругаться.
   lubitelxml
 
9 - 21.04.21 - 15:49
(8) потому что на сервере надо делать
   lubitelxml
 
10 - 21.04.21 - 15:50
Если "В модуле формы пусто" - то откуда "Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)" появилось? и зачем вообще все это, почему просто не использовать "ПриСозданииНаСервере"?
   spiller26
 
11 - 21.04.21 - 15:51
(10) Я писал его.
   RomanYS
 
12 - 21.04.21 - 15:55
(8) тогда так

&НаСервере
Процедура _ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЗаписьЖурналаРегистрации("!");
КонецПроцедуры

#Если Сервер Тогда

    УстановитьДействие("ПриСозданииНаСервере", "_ПриСозданииНаСервере");
#КонецЕсли
   spiller26
 
13 - 21.04.21 - 15:59
(12) Спасибо! Забыл про это совсем.
   RomanYS
 
14 - 21.04.21 - 16:01
(13) Для меня несколько неожиданно было что код "подвала" выполняется и на сервере и на клиенте
   spiller26
 
15 - 21.04.21 - 16:19
(14) Честно для меня тоже.
   mikecool
 
16 - 21.04.21 - 16:22
(14) что же неожиданного? директив разделения нет, значит - везде
   RomanYS
 
17 - 21.04.21 - 16:24
(16) Везде т.е. дважды? В каком порядке например известно?
   acht
 
18 - 21.04.21 - 16:38
(11) Что мешало выбрать в форме нужный обработчик, если ты все равно писал код в модуле?
   lodger
 
19 - 21.04.21 - 16:48
(17) весь код формы сперва компилится и исполняется на сервере.
   RomanYS
 
20 - 21.04.21 - 17:03
(19) А почему на сервере несколько раз выполняется (2 иногда 4 раза)?
&НаСервере
Процедура _ЗаписьЖурналаРегистрации(текст)
    ЗаписьЖурналаРегистрации(текст);
КонецПроцедуры

#Если Сервер Тогда

    ЗаписьЖурналаРегистрации("Сервер");
#КонецЕсли

#Если Клиент Тогда

    _ЗаписьЖурналаРегистрации("Клиент");
#КонецЕсли
   toypaul
 
21 - 21.04.21 - 18:43
хм. интересно. а для чего такой изврат? почему просто не прописать событие в свойствах формы?
   VladZ
 
22 - 21.04.21 - 18:46
(0) Расскажи в целом про задачу.
Очень интересно, в каких случаях это нужно.
   lodger
 
23 - 22.04.21 - 12:12
(20) сперва форма создаётся, компилится и выполняется. это При Создании На Сервере.
потом форма инициализируется с учётом данных. это При Чтении На Сервере.
   acht
 
24 - 22.04.21 - 12:16
(23) Тока оно сначала при чтении, а потом при создании =)
   acht
 
25 - 22.04.21 - 12:19
А потом открывается. На клиенте. Это и есть момент второй компиляции.
   RomanYS
 
26 - 22.04.21 - 12:20
(23) Спасибо. Только насколько можно судить по этой теме "При Создании На Сервере" происходит до события  ПриСозданииНаСервере иначе бы у ТС ничего не получилось.
Единственное что точно понятно, что этот код может выполняться по несколько раз и разных контекстах. И общая рекомендация без необходимости туда ничего не писать.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.