Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ПослеСозданияФормы позже чем ПриОбновленииФормы? (число прочтений - 4824 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ПослеСозданияФормы позже чем ПриОбновленииФормы?
26. Ноября 2007 :: 10:14
Печать  
На форму вешаю текстовое поле с ф-ией "ПриОбновленииФормы()".
Так вот: я всегда думал, что "ПослеСозданияФормы()" должно отрабатывать раньше чем "ПриОбновленииФормы()". Или я ошибался?
Тестовая обработка в прикрепленном файле.
  

OnCreateForm_test.ert ( 60 KB | Загрузки )
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #1 - 26. Ноября 2007 :: 12:35
Печать  
В общем создал пустую конфу, где загружаю ТОЛЬКО ФормЭкс (пробывал и 69-ю и 79-ю сборки). Результат весьма удивил и огорчил: в разных формах предопределённые события срабатывают в разном порядке!!!!
Для Формы списка справочника и журнала:
Цитата:
ПриОткрытии
ПослеОбновленияФормы
ПослеСозданияФормы
ПриОбновленииФормы
ПослеОбновленияФормы
ПослеОбновленияФормы
ПослеОбновленияФормы

Для элементов справочника, документов, внешних отчетов:
Цитата:
ПриОткрытии
ПриОбновленииФормы
ПослеОбновленияФормы
ПослеСозданияФормы

вот такие пироги...  Печаль
В документации про процедуру "ПослеСозданияФормы" написано: Цитата:
Предопределенная процедура вызывается после физического создания окна формы в системе, когда окно формы создано, но еще не полностью проинициализоровано и не отображено на экране.

Т.о., мне кажется, что правильный порядок вызова должен быть следующим:
1) ПриОткрытии
2) ПослеСозданияФормы
3) ПриОбновленииФормы
4) ПослеОбновленияФормы

Можно поправить? (либо меня, либо FormEx)
  

OnCreat_md.rar ( 5 KB | Загрузки )
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #2 - 26. Ноября 2007 :: 21:53
Печать  
Поправить нельзя. Если бы цепочка вызовов была одинаковой на всех формах, то было бы понятно, что место для вызова предопределенной функции выбрано неверно. А так это получается, что движок в разных случаях по-разному действует. Тут сложно что-нибудь придумать.
  

FormEx developer
Наверх
www  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #3 - 27. Ноября 2007 :: 06:25
Печать  
Чет я несовсем понял.
А разве ПриОбновленииФормы  небыло убрано из FormEx?
Ведь оно приводило к большим тормозам.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #4 - 27. Ноября 2007 :: 06:56
Печать  
varelchik писал(а) 27. Ноября 2007 :: 06:25:
Чет я несовсем понял.
А разве ПриОбновленииФормы  небыло убрано из FormEx?
Ведь оно приводило к большим тормозам.

Может, ПослеОбновленияФормы?
Да когда-то убиралось. А потом восстановилось.
На мой взгляд, зря.
Заглушить ПослеОбновленияФормы при помощи СтатусВозврата нельзя, т.к. перестает отрабатывать ПослеОткрытия, а срабатывает ПослеОбновленияФормы много раз.
Алексей, может, ну его опять?
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #5 - 27. Ноября 2007 :: 07:14
Печать  
я "ПослеОбновленияФормы" поставил здесь чисто для "наглядности". Меня интересуют лишь порядок вызова ф-ий "ПослеСозданияФормы" и "ПриОбновленииФормы" (эта не встроенная ф-ия, а ф-ия определённая в текстовом поле на форме, т.е. которое должно отрабатывть при каждом обновлении формы).
А вот то что они в разных местах вызываются в разном порядке это, ИМХО, не есть гуд... ((
Ладно, если АЛьФ сказал, что нельзя - значит нельзя  Печаль Тогда делаем граблями:
Код
Выбрать все
Перем флФормаСоздалась;

Процедура ПослеСозданияФормы()
		флФормаСоздалась=1;
	Сообщить("ПослеСозданияФормы");
КонецПроцедуры	// ПослеСозданияФормы

Функция  ПриОбновленииФормы()
		Если флФормаСоздалась=0 тогда возврат; конецЕсли;
	Сообщить("ПриОбновленииФормы");
КонецФункции// ПриОбновленииФормы

флФормаСоздалась=0; 

  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #6 - 27. Ноября 2007 :: 07:29
Печать  
Цитата:
А вот то что они в разных местах вызываются в разном порядке это, ИМХО, не есть гуд... ((

Да примерно одинаково вызываются Улыбка
Просто, если есть многострочная часть, то перед ПослеСозданияФормы дополнительно отрабатывает ПослеОбновленияФормы.
А вот то, что при навигации по списку много раз срабатывает именно ПослеОбновленияФормы, мне совсем не нравится.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #7 - 27. Ноября 2007 :: 07:36
Печать  
Ну как это одинаково? В журналах и формах списках:
Цитата:
1. ПослеСозданияФормы
2. ПриОбновленииФормы

т.е. правильно.
А в элементах, документах, внеш. отчетах видим прямо противоположное:
Цитата:
1. ПриОбновленииФормы
2. ПослеСозданияФормы

Почему-то вперед отрабатывает ф-ия, повешанная на текстовый реквизит формы, хотя, судя по документации, этого не должно быть, т.к. форма ещё не отображена на экране.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #8 - 30. Ноября 2007 :: 08:25
Печать  
vip писал(а) 27. Ноября 2007 :: 06:56:
Может, ПослеОбновленияФормы?
Да когда-то убиралось. А потом восстановилось.
На мой взгляд, зря.
Алексей, может, ну его опять?

Время на вызов события ПослеОбновленияФормы тратится только в том случае, если существует обработчик этого события в форме или глобальнике!!
Если обработчика нет, никаких тормозов также нет Улыбка

Т.е. дело разработчика/пользователя ФормЕкс - использовать или нет данное событие, соответственно, он сам должен решать вопрос с тормозами из-за частого вызова соответствующего обработчика.
ИМХО есть АПИ и есть клиентский код, который и должен отвечать за все последствия Улыбка

ЗЫ я говорю о версиях старше сборки 59
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #9 - 30. Ноября 2007 :: 08:54
Печать  
Цитата:
Время на вызов события ПослеОбновленияФормы тратится только в том случае, если существует обработчик этого события в форме или глобальнике!!
Если обработчика нет, никаких тормозов также нет

И это хорошо.
И с другими предопределенными процедурами так?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #10 - 30. Ноября 2007 :: 08:59
Печать  
Само собой, именно из-за этого и из-за ускорения поиска обработчиков событий 1С больше не тормозит при загруженной ФормЕкс Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #11 - 30. Ноября 2007 :: 09:08
Печать  
Артур, выйди в аську, плиз.
  

FormEx developer
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #12 - 30. Ноября 2007 :: 10:07
Печать  
Цитата:
Артур, выйди в аську, плиз.

Алексей, через час-полтора устроит?
Или в почту пиши Улыбка
или в личку на сайте Улыбка
ЗЫ пока нету доступа к аське
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #13 - 30. Ноября 2007 :: 10:56
Печать  
Устроит. Подожду.
  

FormEx developer
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПослеСозданияФормы позже чем ПриОбновленииФорм
Ответ #14 - 30. Ноября 2007 :: 12:08
Печать  
Артур, скажи что-нибудь по сабжу.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать