Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Странное поведение ТП. (Нашлась причина падения) (число прочтений - 11364 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Странное поведение ТП. (Нашлась причина падения)
10. Октября 2007 :: 08:01
Печать  
Странное поведение ТП. На рел. 2.5.0.3 + FE #69:
Пользователи при использовании доработаного класса РасшСправочник начали ловить выпадение БД при смене фильтров от 6 до 20 раз в день. Ошибка возникает нестабильно при совмещении след. действий:
Прокрутка колесом+Смена фильтра
На 2.5.0.1 такого нет.
Вот это попадает в логи:

Ошибка приложения 1cv7s.exe, версия 7.70.0.27, модуль mfc42.dll, версия 6.2.4131.0, адрес 0x00004dbd.
Ошибка приложения 1cv7s.exe, версия 7.70.0.27, модуль 1cpp.dll, версия 2.5.0.3, адрес 0x00089cf1.
Ошибка приложения 1cv7s.exe, версия 7.70.0.27, модуль ntdll.dll, версия 5.1.2600.2180, адрес 0x0001888f.

В чём может быть причина и как исправить ошибку. Хочется новых возможностей нового релиза Печаль
« Последняя редакция: 22. Ноября 2007 :: 07:47 - slider26 »  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #1 - 10. Октября 2007 :: 09:23
Печать  
Давай тест, на котором ошибку можно отловить хотя бы с некоторой точностью/вероятностью !
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #2 - 11. Октября 2007 :: 12:20
Печать  
artbear писал(а) 10. Октября 2007 :: 09:23:
Давай тест, на котором ошибку можно отловить хотя бы с некоторой точностью/вероятностью !

Вот тестовая конфа+данные:
Распаковываем, загружаем данные, Открываем обработку, меняем фильтр 10-15 раз (можно совместно с прокруткой ТП) и наблюдаем глюк. В конфе доработаный класс РасшСправочник, наследник ТП. На предидущем релизе падений не замечал.
  

TestConf.rar ( 677 KB | Загрузки )
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #3 - 15. Октября 2007 :: 07:34
Печать  
2 artbear:
Ну как? Удалось отловить ошибку?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #4 - 15. Октября 2007 :: 10:26
Печать  
slider26 писал(а) 15. Октября 2007 :: 07:34:
2 artbear:
Ну как? Удалось отловить ошибку?

Я только вышел из почти недельного оффлайна Улыбка
ЗЫ это вы работаете, а у нас в Башкирии (про бабушку-героя Шевцову слышали? Улыбка  ) 4 дня праздников было.
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #5 - 17. Октября 2007 :: 06:56
Печать  
artbear писал(а) 15. Октября 2007 :: 10:26:
Я только вышел из почти недельного оффлайна Улыбка

Есть новости? Улыбка Новый функционал нужен, а использовать компоненту нельзя Печаль Со старой версией нагрузка на терминал больше Печаль
« Последняя редакция: 18. Октября 2007 :: 11:56 - slider26 »  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #6 - 18. Октября 2007 :: 12:02
Печать  
(0) Пока не занимался Печаль
Ты анализировал поведение при разных комбинациях ВК ?
Типа 1С++ старый 2.5.0.1, а ФормЕкс новый ?
или наоборот 1С++ новый 2.5.0.3/4, а ФормЕкс старый (тот, что тормозит) ?
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #7 - 18. Октября 2007 :: 12:16
Печать  
Летит на новом 1С++ (2.5.0.3), независимо от релиза FE (#33, #58, #69, #76), летит на тек. ночнике Печаль
На версии 2.5.0.1 вылетов нет, обновление данных в ТП идёт вроде бы быстрее...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #8 - 18. Октября 2007 :: 12:27
Печать  
У меня скуля ведь нету Печаль
Так что я даже проверить не могу Печаль
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #9 - 18. Октября 2007 :: 17:34
Печать  
Вот ещё наблюдение: глюк вылазит стабильно на 18 отображаемых колонках в ТП, если оставить только 4 глюк не отлавливается... Печаль
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #10 - 18. Октября 2007 :: 17:44
Печать  
artbear писал(а) 18. Октября 2007 :: 12:27:
У меня скуля ведь нету Печаль
Так что я даже проверить не могу Печаль

Можно поставить Developer Edition - он не требует для себя серверной системы и прекрасно встаёт на обычную винду...
Пробовать что называется "С нуля" отлаживать чужой код - Жесть... Печаль Да и с VC мне сталкиваться раньше не доводилось... Всё больше Borlaland C++ Builder Улыбка
Мне кажется, что варианта 2:
1.Косячит новая версия ТП с большим количеством колонок;
2.Косячит новая версия поставщика данных для SQL БД...
Ну и на закуску:
3.Глюк и там и там Печаль
Пока больше идей нет Печаль
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #11 - 22. Октября 2007 :: 16:20
Печать  
slider26

Можно попробовать взять вариант 1cpp отсюда: http://itland.ru/forum//index.php?showtopic=20915&st=0#entry103154
Тот, который b20071021_2504.rar
  

De quelle planète es-tu?
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #12 - 23. Октября 2007 :: 02:59
Печать  
kms писал(а) 22. Октября 2007 :: 16:20:
Можно попробовать взять вариант 1cpp отсюда: http://itland.ru/forum//index.php?showtopic=20915&st=0#entry103154
Тот, который b20071021_2504.rar

На тестовой БД не падает Улыбка
Проверю на рабочей Улыбка
А чем эта сборка отличается от того, что лежит на www.1cpp.ru (Найтбилд)? Написано же, в форуме, что это "сборка официальной CVS версии 1CPP 2.5.0.4"?
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #13 - 23. Октября 2007 :: 03:32
Печать  
Нашёл баг в этой сборке - для класса РасшЖурнал, созданого на базе ТП,
теперь надо делать РасшЖурнал=0 в процедуре ПриЗакрытии(),
иначе 1С падает...
Видимо деструктор поздно отрабатывает Печаль FE #78...
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #14 - 23. Октября 2007 :: 07:53
Печать  
Цитата:
А чем эта сборка отличается от того, что лежит на www.1cpp.ru (Найтбилд)? Написано же, в форуме, что это "сборка официальной CVS версии 1CPP 2.5.0.4"?

ТП там другое, все остальное - из магазина.
Вообще, в архиве документация и старая (то, что являлось основой), и новая - я предполагал, что kdiff может выявить различия.

Цитата:
теперь надо делать РасшЖурнал=0 в процедуре ПриЗакрытии(),
иначе 1С падает...

Как это стабильно поймать? Твой пример пока не помогает.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #15 - 23. Октября 2007 :: 09:10
Печать  
kms писал(а) 23. Октября 2007 :: 07:53:
Как это стабильно поймать? Твой пример пока не помогает.

У меня: на старой версии 1С++ при закрытии обработки с ТП ничего не происходит Улыбка
На новой версии: При закрытии формы 1С падает...
Если в новой версии добавить в "ПриЗакрытии()" код "РасшСправочник = 0;", то всё ОК...
Добавил на раборчей конфе Улыбка
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. На рел. 2.5.0.3 + FE #6
Ответ #16 - 22. Ноября 2007 :: 07:22
Печать  
Как говорится, возвращаясь к напечатаному Улыбка
Наконец-то нашел причину падения:
у меня в ТП используется автообновление:
Код
Выбрать все
ТабличноеПоле.ТаймаутОбновления = ПериодАвтоОбновления;
 


и смена фильтров идёт сл. образом:
Код
Выбрать все
ТабличноеПоле.ПоставщикДанных = "";
ТекстЗапроса = ТекстЗапроса();
Источник.УстТекстЗапроса(ТекстЗапроса);
    
Источник.УстКлючПорядка(УточнитьПолеПорядка(ПолеПорядка));

ТабличноеПоле.ПоставщикДанных = Источник;

Источник.УстИдПоле("Документ");
Источник.Обновить(ТекСтрока);  
 


При этом база непрогнозируемо падала Печаль
Затем, на ТП от kms глюка почти не наблюдалось
Потом мне пришлось "утяжелить" запрос.
И падения начались снова.
Потратив неск-ко дней я нашёл причину падения.
Вот этот код работает нормально:
Код
Выбрать все
ПериодАвтоОбновления = ТабличноеПоле.ТаймаутОбновления;
ТабличноеПоле.ТаймаутОбновления = 0;

ТабличноеПоле.ПоставщикДанных = "";
ТекстЗапроса = ТекстЗапроса();
Источник.УстТекстЗапроса(ТекстЗапроса);
    
Источник.УстКлючПорядка(УточнитьПолеПорядка(ПолеПорядка));

ТабличноеПоле.ПоставщикДанных = Источник;

Источник.УстИдПоле("Документ");
Источник.Обновить(ТекСтрока);  

ТабличноеПоле.ТаймаутОбновления = ПериодАвтоОбновления;
 


Причина - ТП пытается обновиться, когда источник="", Либо источник обнуляется в тот момент, когда ТП обновляется. Печаль
Хотя скорее первое, так как при обновлении ТП база "Тормозит" и достучатся до формы нельзя.
Мне кажется, что это скорее баг, чем фича Улыбка
Давайте это запретим на уровне C-кода.

 И ещё:
ТП обновляется даже тогда, когда форма с контролом неактивна, и если запрос достаточно "Тяжёлый", то работая в другой форме наблюдаешь "торможение" базы...

Предлагаю реализовать возможность настройки обновления следующим образом:

 Параметр "АвтоматическоеОбновлениеАктивнойФормы":
1.Не обновлять
2.Только при простое, с заданым интервалом ;
3.Всегда, с заданым интервалом;
 Параметр "АвтоматическоеОбновлениеНеактивнойФормы":
1.Не обновлять, не обновлять строки ТП при активизации формы;
2.Не обновлять, обновить строки ТП при активизации формы;
3.Только при простое, с заданым интервалом ;
4.Всегда, с заданым интервалом;

Интервал устанавливается тем же параметром, что и раньше. Если зад.интервал 0, обновление не происходит

Для обратной совместимости - по умолчанию параметры равны 3 и 4 соответственно.
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. (Нашлась причина падени
Ответ #17 - 22. Ноября 2007 :: 08:30
Печать  
Добавил пост в "Хотелки" - вроде-бы более подходит по теме Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. (Нашлась причина падени
Ответ #18 - 22. Ноября 2007 :: 10:05
Печать  
slider26 писал(а) 22. Ноября 2007 :: 08:30:
Добавил пост в "Хотелки" - вроде-бы более подходит по теме Улыбка


Ну решение же простое...
ПриАктивацииОкна
ПриДеактивацииОкна


Отключая-включай автообновление.

P.S. А вообще - расставь индексов/оптимизируй запрос и не будет тормозить
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Странное поведение ТП. (Нашлась причина падени
Ответ #19 - 22. Ноября 2007 :: 10:21
Печать  
Arta писал(а) 22. Ноября 2007 :: 10:05:
Ну решение же простое...
ПриАктивацииОкна
ПриДеактивацииОкна

Отключая-включай автообновление.

Да это понятно Улыбка А если надо обновлять только в режиме простоя, то в обычной Форма.ОбработкаОжидания() написать "ТП.ОбновитьСтроки()".
ИМХО - Много лишней обвязки - удобней бы было этот механизм иметь в классе Улыбка
Кроме того проверка на существование источника тоже была бы не лишней Улыбка

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. (Нашлась причина падени
Ответ #20 - 22. Ноября 2007 :: 10:27
Печать  
Пока ты писал пост, я уже сделал у себя в базе Улыбка

В перехватчике формы:
ЭлементыУправленияНаФорме - СЗ с активиксами и ТП, всегда хранятся у меня в классе перехватчика.
Код
Выбрать все
Процедура ПриДеактивацииОкна() Экспорт
	Если ПустоеЗначение(ЭлементыУправленияНаФорме) = 0 Тогда
		Информатор = СоздатьОбъект("Информатор");
		Для Индекс = 1 По ЭлементыУправленияНаФорме.РазмерСписка() Цикл
			Элемент = ЭлементыУправленияНаФорме.ПолучитьЗначение(Индекс);
			Если ПустоеЗначение(Элемент) = 0 Тогда
				Если Информатор.МетодСуществует(Элемент, "ПриДеактивацииОкна") = 1 Тогда
					Элемент.ПриДеактивацииОкна();
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
//***************************************************************
//***************************************************************
Процедура ПриАктивацииОкна() Экспорт
	Если ПустоеЗначение(ЭлементыУправленияНаФорме) = 0 Тогда
		Информатор = СоздатьОбъект("Информатор");
		Для Индекс = 1 По ЭлементыУправленияНаФорме.РазмерСписка() Цикл
			Элемент = ЭлементыУправленияНаФорме.ПолучитьЗначение(Индекс);
			Если ПустоеЗначение(Элемент) = 0 Тогда
				Если Информатор.МетодСуществует(Элемент, "ПриАктивацииОкна") = 1 Тогда
					Элемент.ПриАктивацииОкна();
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
//***************************************************************
//***************************************************************
 



В классе ТП:
Код
Выбрать все
Перем ТаймаутОбновленияТП;

Процедура ПриДеактивацииОкна() Экспорт
	ТаймаутОбновленияТП = Сам().ТаймаутОбновления;
	Если ТаймаутОбновленияТП > 0 Тогда
		Сам().ТаймаутОбновления = 0
	КонецЕсли;
КонецПроцедуры
//***************************************************************
//***************************************************************
Процедура ПриАктивацииОкна() Экспорт
	Сам().ТаймаутОбновления = ТаймаутОбновленияТП;
КонецПроцедуры
//***************************************************************
//***************************************************************
 




Такой вариант можно запользовать и для других процедур обслуживания ТП при активации и деактивации ТП.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение ТП. (Нашлась причина падени
Ответ #21 - 22. Ноября 2007 :: 10:28
Печать  
P.S. Спасибо за мысль  Смех
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать