Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Объясните новичку разницу между процедурами "ПриОткрытии, ПередОткрытием" и модулем формы

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

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

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

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

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

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

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

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