Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Падение 1С при обновлении данных в ТП (число прочтений - 3909 )
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Падение 1С при обновлении данных в ТП
23. Июля 2007 :: 07:35
Печать  
1С++ последние ночные билды, обновляю почти каждый день, сегодня например обновлял (версия 2.0.5.1)
Formex (версия 2.0.5.0 #56)
25 релиз SQL.
ms sql server 2000, какой SP не смотрел.

При обновлении набора данных, как правило, на 9 раз падает, промежуток между обновлениями около 5 сек, этого времени однозначно достаточно чтобы выполнить весь запрос. при этом на экране порция данных уже отображена.

чаще всего падает при наложенном условии по контрагентам. условие делается не по таб.ссылок. на по шапкам таблиц через COALESCE, в котором может быть до 23 значений, но падает и без него.

прилагаю тестовый набор для типовой комплексной конфигурации.

последний раз проверял на демо комплексной 468.
iddoc уникален в получаемой выборке, проверял отдельным запросом.

есть вероятность, что нагородил в коде.
  

_to.zip ( 133 KB | Загрузки )

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #1 - 23. Июля 2007 :: 07:51
Печать  
Я лично отказался от автообновления в ТП.
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #2 - 23. Июля 2007 :: 07:55
Печать  
Прикол в том, что я тоже не использую автообновление, у меня обновляется при переходе на закладку "Результат"
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падение 1С при обновлении данных в ТП
Ответ #3 - 23. Июля 2007 :: 09:48
Печать  
[quote author=Phoenix link=1185176115/0#0 date=1185176114]есть вероятность, что нагородил в коде.[/quote]
Да нет, нормально все.

[b]DmitrO[/b]
Дим, привет.
При отрисовке линеек может происходить нарушение границ массива слева (по отрицательным индексам).
Как это решить лучшим образом - не мог бы подсказать?

[quote]
void CCursorGridCtrl::PaintGridLines(CDC *pDC)
{
   int nStrokeCount;
   int nPointCount;
   int i;

   CRect rect = GetGridRect();

   int nFullVisibleRows = 0;
   if (m_bHorizontalLines)
      nFullVisibleRows = min(m_nVisibleRows, m_rows.GetSize() - m_nTopRowIndex); // может уходить в минус

   [b]nFullVisibleRows = max(nFullVisibleRows, 0);[/b] // есть ли более красивое решение?

   nStrokeCount = nFullVisibleRows;

// cut //
[/quote]
Может, стоит сбрасывать m_nTopRowIndex при очистке m_rows?
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #4 - 23. Июля 2007 :: 10:00
Печать  
кстати, дома поймал такой прикол: перед падением область ТП исчерчена серыми линиями вдоль и поперек, линии где-то частные, где-то редкие, скорее всего связано с прорисовкой. узел находился в левом верхнем углу.
скрин дома остался. думаю это не существенно, но все же.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падение 1С при обновлении данных в ТП
Ответ #5 - 23. Июля 2007 :: 10:09
Печать  
Phoenix
Да, это понятно и так запросто может быть, неверная отрисовка и падение из-за разрушения CRT кучи.
В принципе и причина и решение предложено выше, можно проверить.
Ну, возможно DmitrO предложит чуть более стройное по организации решение.
Т.к. Дима автор этого дела, а остальные - простые адепты тайных знаний Улыбка


тайных равно недокументированных
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #6 - 23. Июля 2007 :: 10:13
Печать  
я с удовольствием потестю любой вариант.
чуть что, email указан.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падение 1С при обновлении данных в ТП
Ответ #7 - 23. Июля 2007 :: 10:38
Печать  
Или такой вариант:

void CCursorGridCtrl::ClearRows()
{
   OnChangeCurrentData(NULL);
   for (int i = 0; i < m_rows.GetSize(); i++)
       delete m_rows[i];
   m_rows.RemoveAll();

   m_bIsBOF = TRUE;
   m_bIsEOF = TRUE;

     m_nTopRowIndex = 0;
}


Phoenix
Ну, к примеру последний CVS build 2.5 с этим исправлением http://slil.ru/24655351
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #8 - 23. Июля 2007 :: 11:15
Печать  
kms писал(а) 23. Июля 2007 :: 10:38:
Или такой вариант:
Ну, к примеру последний CVS build 2.5 с этим исправлением http://slil.ru/24655351

пока играюсь, не падает Улыбка
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #9 - 23. Июля 2007 :: 11:54
Печать  
[quote author=kms link=1185176115/0#3 date=1185184087][quote author=Phoenix link=1185176115/0#0 date=1185176114]есть вероятность, что нагородил в коде.[/quote]
Да нет, нормально все.

[b]DmitrO[/b]
Дим, привет.
При отрисовке линеек может происходить нарушение границ массива слева (по отрицательным индексам).
Как это решить лучшим образом - не мог бы подсказать?

[quote]
void CCursorGridCtrl::PaintGridLines(CDC *pDC)
{
   int nStrokeCount;
   int nPointCount;
   int i;

   CRect rect = GetGridRect();

   int nFullVisibleRows = 0;
   if (m_bHorizontalLines)
      nFullVisibleRows = min(m_nVisibleRows, m_rows.GetSize() - m_nTopRowIndex); // может уходить в минус

   [b]nFullVisibleRows = max(nFullVisibleRows, 0);[/b] // есть ли более красивое решение?

   nStrokeCount = nFullVisibleRows;

// cut //
[/quote]
Может, стоит сбрасывать m_nTopRowIndex при очистке m_rows?[/quote]
Привет. Здесь никогда не должно уходить в минус. m_nTopRowIndex должен быть всегда >=0.

[quote]
Или такой вариант:

void CCursorGridCtrl::ClearRows()
{
   OnChangeCurrentData(NULL);
   for (int i = 0; i < m_rows.GetSize(); i++)
      delete m_rows[i];
   m_rows.RemoveAll();

   m_bIsBOF = TRUE;
   m_bIsEOF = TRUE;

   [b]m_nTopRowIndex = 0; [/b]
}
[/quote]
Вот тут действительно ошибка (то, что в оригинальном коде нет выделенной строки), в ClearRows дествительно надо занулять m_nTopRowIndex.
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падение 1С при обновлении данных в ТП
Ответ #10 - 23. Июля 2007 :: 14:59
Печать  
[quote author=DmitrO link=1185176115/0#9 date=1185191688]
Вот тут действительно ошибка (то, что в оригинальном коде нет выделенной строки), в ClearRows дествительно надо занулять m_nTopRowIndex.[/quote]
ОК, спасибо, значит разобрались.
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #11 - 30. Июля 2007 :: 07:00
Печать  
хотелось бы узнать какой-либо из описанных вариантов уже включен в ночной билд?
или пока использовать версию, выложенную в ветке?
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падение 1С при обновлении данных в ТП
Ответ #12 - 31. Июля 2007 :: 20:33
Печать  
ну это уже, наверное, разработчик 1cpp сможет включить в билд, если сочтет возможным
у меня, к счастью, нет зависимости от билдов 1cpp, но я за то, чтобы такой потрясающий контрол как ТП был отшлифован даже в таких деталях
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #13 - 01. Августа 2007 :: 05:43
Печать  
kms писал(а) 31. Июля 2007 :: 20:33:
ну это уже, наверное, разработчик 1cpp сможет включить в билд, если сочтет возможным
у меня, к счастью, нет зависимости от билдов 1cpp, но я за то, чтобы такой потрясающий контрол как ТП был отшлифован даже в таких деталях

полностью согласен. сейчас подправленный тобой билд работает стабильно. хочу на след.неделе ВК обновить, вот и спрашиваю.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Падение 1С при обновлении данных в ТП
Ответ #14 - 06. Августа 2007 :: 04:02
Печать  
[quote author=DmitrO link=1185176115/0#9 date=1185191688]
Вот тут действительно ошибка (то, что в оригинальном коде нет выделенной строки), в ClearRows дествительно надо занулять m_nTopRowIndex.[/quote]
Исправлять в 2.5 и 2.0.3 еще нужно?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать