Имя: Пароль:
1C
1С v8
Объясните новичку разницу между процедурами "ПриОткрытии, ПередОткрытием" и модулем формы
0 new_hope
 
11.07.19
13:35
Постараюсь правильно сформулировать свой вопрос, итак:
К примеру, мы создали новую форму. Инициализировали в ней глобальную переменную:
Перем МояПеременнаяСписок

Затем в (например) в процедуре "ПриОткрытии" инициализируем эту переменную:

Процедура ПриОткрытии()
//....
   МояПеременнаяСписок = Новый СписокЗначений;
//....
КонецПроцедуры

И тут вопрос:
Если я инициализирую эту переменную ВНЕ любих процедур и функций... Просто в модуле формы добавлю эту строку (в самом низу кода, как обычно):
   МояПеременнаяСписок = Новый СписокЗначений;

Вопрос - какое отличие в инициализации этой переменной (да и любого другого кода, если его писать в процедуре "ПриОткрытии" или просто в модуле (ВНЕ любых процедур и функций?
1 shuhard
 
11.07.19
13:41
(0) ответ очевидный, переменная будет дотступна более "поздним" обработчикам
2 new_hope
 
11.07.19
13:43
(1) Если честно - не понял
3 hhhh
 
11.07.19
13:44
(0) если не открывать форму, а просто создать, то есть разница. Если внимательно проанализировать название процедуры, ПриОткрытии - это значит только при открытии формы появится ваша переменная.
4 new_hope
 
11.07.19
13:51
(3) То-есть - при создании формы я буду иметь инициализированную переменную у этого объекта(формы) (если переменная будет инициализироваться просто в модуле).... - то-есть моя переменная уже будет некий СписокЗначений (пустой, если этот пример рассматривать)

Но в случае с процедурой (ПриОткрытии) - пока я не сделаю "МояФорма.Открыть()" - моя пернеменная - Неопределено..
Если так - то теперь все ясно! Спасибо.
5 Ник080808
 
11.07.19
13:52
(0)
Если в При открытии
Форма = ПолучитьФорму("ТвояФорма");
Форма.МояПеременнаяСписок будет равна  Неопределено;
Форма.Открыть();
Форма.МояПеременнаяСписок будет равна  Список значений

Если в основном разделе (не в процедуре)
Форма = ПолучитьФорму("ТвояФорма");
Форма.МояПеременнаяСписок будет равна  Список значений
Форма.Открыть();
Форма.МояПеременнаяСписок будет равна  Список значений
6 ptiz
 
11.07.19
13:55
(0) Первое, что ты должен указывать в вопросе: работаешь с обычными формами или управляемыми?
7 Aleksandr N
 
11.07.19
13:58
(6) перед открытием есть только в ОФ.
8 Eiffil123
 
11.07.19
14:00
В Управляемых формах лучше не использовать переменные модуля формы, т.к. они уничтожаются при передаче управления на сервер и обратно.
9 Aleksandr N
 
11.07.19
14:00
(8) Нет.
10 Aleksandr N
 
11.07.19
14:00
(8) Те, что на клиенте, не уничтожаются.
11 Eiffil123
 
11.07.19
14:01
(9) каким образом нет? Если это просто переменная, объявленная со словом Перем в модуле формы?
12 new_hope
 
11.07.19
14:01
(6) Да... пардон. Обычные формы. В Управляемых поведение в данном случае совсем другое?
13 Eiffil123
 
11.07.19
14:02
(10) а, ок, думал, у клиентских такое же поведение, как и у серверных.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший