|   |   | 
| 
 | Программно создать событие ПриСозданииНаСервере? | ☑ | ||
|---|---|---|---|---|
| 0
    
        spiller26 21.04.21✎ 15:29 | 
        Есть форма "ФормаГруппы" справочника "ВидыВходящихДокументов"
 Нужно программно создать событие для этой формы. В модуле формы пусто, расширение не предлагать. | |||
| 1
    
        RomanYS 21.04.21✎ 15:33 | 
        Программно можно назначить обработчик (вроде УстановитьДействие). Что значит "программно создать" не очень понятно     | |||
| 2
    
        spiller26 21.04.21✎ 15:36 | 
        (1) Ну да установить УстановитьДействие, вот так примерно.
 ЭтаФорма.УстановитьДействие("ПриСозданииНаСервере", "ПриСозданииНаСервере"); | |||
| 3
    
        RomanYS 21.04.21✎ 15:37 | 
        (2) И.. вопрос закрыт?     | |||
| 4
    
        spiller26 21.04.21✎ 15:39 | 
        (2) где прописывать в модуле?     | |||
| 5
    
        butterbean 21.04.21✎ 15:40 | 
        (4) где угодно, главное чтобы выполнялось на сервере     | |||
| 6
    
        spiller26 21.04.21✎ 15:41 | 
        (5) Т.е. само подтянется?     | |||
| 7
    
        spiller26 21.04.21✎ 15:47 | 
        Короче сделал так. правильно-неправильно решать не мне, но работает.
 &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭлементОрг = Элементы.Добавить("абтОрганизацияПравообладатель", Тип("ПолеФормы"),); ЭлементОрг.Вид = ВидПоляФормы.ПолеВвода; ЭлементОрг.ПутьКДанным = "Объект.абтОрганизацияПравообладатель"; ЭлементОрг.РастягиватьПоГоризонтали = Истина; ЭлементОрг.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; ЭлементОрг.КнопкаОчистки = Истина; ЭлементОрг.ЦветТекстаЗаголовка = Новый Цвет(255,140,0); КонецПроцедуры Попытка УстановитьДействие("ПриСозданииНаСервере", "ПриСозданииНаСервере"); Исключение КонецПопытки; | |||
| 8
    
        spiller26 21.04.21✎ 15:48 | 
        (7) Попытку сделал, т.к. проходя клиента, начинает ругаться.     | |||
| 9
    
        lubitelxml 21.04.21✎ 15:49 | 
        (8) потому что на сервере надо делать     | |||
| 10
    
        lubitelxml 21.04.21✎ 15:50 | 
        Если "В модуле формы пусто" - то откуда "Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)" появилось? и зачем вообще все это, почему просто не использовать "ПриСозданииНаСервере"?     | |||
| 11
    
        spiller26 21.04.21✎ 15:51 | 
        (10) Я писал его.     | |||
| 12
    
        RomanYS 21.04.21✎ 15:55 | 
        (8) тогда так
 &НаСервере Процедура _ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЗаписьЖурналаРегистрации("!"); КонецПроцедуры #Если Сервер Тогда УстановитьДействие("ПриСозданииНаСервере", "_ПриСозданииНаСервере"); #КонецЕсли | |||
| 13
    
        spiller26 21.04.21✎ 15:59 | 
        (12) Спасибо! Забыл про это совсем.     | |||
| 14
    
        RomanYS 21.04.21✎ 16:01 | 
        (13) Для меня несколько неожиданно было что код "подвала" выполняется и на сервере и на клиенте     | |||
| 15
    
        spiller26 21.04.21✎ 16:19 | 
        (14) Честно для меня тоже.     | |||
| 16
    
        mikecool 21.04.21✎ 16:22 | 
        (14) что же неожиданного? директив разделения нет, значит - везде     | |||
| 17
    
        RomanYS 21.04.21✎ 16:24 | 
        (16) Везде т.е. дважды? В каком порядке например известно?     | |||
| 18
    
        acht 21.04.21✎ 16:38 | 
        (11) Что мешало выбрать в форме нужный обработчик, если ты все равно писал код в модуле?     | |||
| 19
    
        lodger 21.04.21✎ 16:48 | 
        (17) весь код формы сперва компилится и исполняется на сервере.     | |||
| 20
    
        RomanYS 21.04.21✎ 17:03 | 
        (19) А почему на сервере несколько раз выполняется (2 иногда 4 раза)?
 &НаСервере Процедура _ЗаписьЖурналаРегистрации(текст) ЗаписьЖурналаРегистрации(текст); КонецПроцедуры #Если Сервер Тогда ЗаписьЖурналаРегистрации("Сервер"); #КонецЕсли #Если Клиент Тогда _ЗаписьЖурналаРегистрации("Клиент"); #КонецЕсли | |||
| 21
    
        toypaul гуру 21.04.21✎ 18:43 | 
        хм. интересно. а для чего такой изврат? почему просто не прописать событие в свойствах формы?     | |||
| 22
    
        VladZ 21.04.21✎ 18:46 | 
        (0) Расскажи в целом про задачу.
 Очень интересно, в каких случаях это нужно. | |||
| 23
    
        lodger 22.04.21✎ 12:12 | 
        (20) сперва форма создаётся, компилится и выполняется. это При Создании На Сервере.
 потом форма инициализируется с учётом данных. это При Чтении На Сервере. | |||
| 24
    
        acht 22.04.21✎ 12:16 | 
        (23) Тока оно сначала при чтении, а потом при создании =)     | |||
| 25
    
        acht 22.04.21✎ 12:19 | 
        А потом открывается. На клиенте. Это и есть момент второй компиляции.     | |||
| 26
    
        RomanYS 22.04.21✎ 12:20 | 
        (23) Спасибо. Только насколько можно судить по этой теме "При Создании На Сервере" происходит до события  ПриСозданииНаСервере иначе бы у ТС ничего не получилось.
 Единственное что точно понятно, что этот код может выполняться по несколько раз и разных контекстах. И общая рекомендация без необходимости туда ничего не писать. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |