Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Ошибка в ТП. Странная и трудноуловимая. (число прочтений - 4404 )
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Ошибка в ТП. Странная и трудноуловимая.
06. Января 2007 :: 07:30
Печать  
Например, есть у нас такая процедурина в форме списка справочника
Код
Выбрать все
Процедура кнТаблица_ПриВыводеСтроки(оТП, ОформлениеСтроки, ДанныеСтроки) Экспорт
	Если оТП.Колонки.АдресДоставки.Видимость = 1 Тогда
		Ячейка = ОформлениеСтроки.Ячейки.Получить("фАдресДоставки");
		Ячейка.ОтображатьФлажок = 1;
		Ячейка.ЗначениеФлажка   = ДанныеСтроки.фАдресДоставки; //вот в этом месте падает
	КонецЕсли;
КонецПроцедуры
 


Провайдер - ODBCDataProvider.MSSQL

Иногда вылазит ошибка при обращении к ДанныеСтроки - типа "поле фАдресДоставки агрегатного объекта не найдено". Повторить не удаётся, но есть предположение, что такая фигня происходит при одновременной записи объекта в базу данных и отображении в ТП.
Судя по логам ошибок в боевой базе ситуация возникает весьма часто. Десяток-другой раз за день при количестве документов в несколько сотен.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #1 - 06. Января 2007 :: 12:20
Печать  
Присоединяюсь. Причин найти не смог.


to kms: я, как любитель опенсорса, опять винил во всем винды Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #2 - 06. Января 2007 :: 15:44
Печать  
ADirks писал(а) 06. Января 2007 :: 07:30:
Иногда вылазит ошибка при обращении к ДанныеСтроки - типа "поле фАдресДоставки агрегатного объекта не найдено". Повторить не удаётся, но есть предположение, что такая фигня происходит при одновременной записи объекта в базу данных и отображении в ТП.

А если запустить два сеанса 1С, в одном что-то постоянно модифицировать, в другом постоянно обновлять ТП.
Будет повторяемо ловиться?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #3 - 06. Января 2007 :: 16:10
Печать  
Такая проблема возникает только при обновлении строк. Совместить момент изменения с обновлением строк трудновато.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #4 - 07. Января 2007 :: 15:17
Печать  
Arta писал(а) 06. Января 2007 :: 16:10:
Такая проблема возникает только при обновлении строк. Совместить момент изменения с обновлением строк трудновато.

А если запустить в цикле ТП::ОбновитьСтроки()?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #5 - 08. Января 2007 :: 05:33
Печать  
Строки обновляются по таймауту? Ну т.е. используется в этом экземпляре ТП не нулевое значение свойства ТаймаутОбновления?
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #6 - 09. Января 2007 :: 11:11
Печать  
DmitrO писал(а) 08. Января 2007 :: 05:33:
Строки обновляются по таймауту? Ну т.е. используется в этом экземпляре ТП не нулевое значение свойства ТаймаутОбновления?

Ага, по таймауту.

Сделал такой тест
Код
Выбрать все
	Спр = СоздатьОбъект("Справочник.Контрагенты");
	Спр.НайтиЭлемент(Контрагент);

	Наименование = СокрЛП(Спр.Наименование);
	Для н = 1 По 10000 Цикл
		Спр.Наименование = Наименование+"-"+н;
		Спр.Записать();
	КонецЦикла;
 


Таймаут выставил в 1. Три прогона - ни одной ошибки.  Контрагент, который там обновляется точно был видимым в списке. При этом запускал ещё 3 копии этой же базы, открывал список контрагентов, находил нужного - тоже ноль эмоций.  В общем, то ли мало мучал, то ли проблемы в другом.

Я сам лично видел эту ошибку только один раз - когда в карточке контрагента нажал ОК, потому и предположение такое выдвинул.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #7 - 09. Января 2007 :: 15:54
Печать  
Прогнал тест тоже.
Отловить ошибку не удалось.

Сам видел только по логам.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #8 - 09. Января 2007 :: 19:23
Печать  
ADirks писал(а) 09. Января 2007 :: 11:11:
Таймаут выставил в 1. Три прогона - ни одной ошибки.  Контрагент, который там обновляется точно был видимым в списке. При этом запускал ещё 3 копии этой же базы, открывал список контрагентов, находил нужного - тоже ноль эмоций.  В общем, то ли мало мучал, то ли проблемы в другом.

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

С другой стороны, я не разбирался в механике получения данных провайдером, так что мне этот вопрос далек.
Может, и не нужно тестов, если DmitrO и так понятна причина проблемы.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #9 - 09. Января 2007 :: 20:24
Печать  
Тест так и сделал. В одной сессии постоянно перезаписывал, а в другой постоянно принудительно обновлял.

Кстати проблема у меня возникала только для MSSQL, т.е. для поставщика ТЗ - ошибка не вываливалась.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #10 - 10. Января 2007 :: 05:53
Печать  
Мне причина проблемы не понятна. Просто нечто подобное было замечено ранее.
Сейчас могу только высказать предположение, что сама запись объекта тут скрее всего непричем. Имхо копать надо в сторону того что после записи объекта обычно идет установка позиции текущей строки на записанный объект методом поставщика Обновить (признайтесь у вас ведь так сделано Улыбка). Вот при таком позиционировании ТП полностью перечитывает все строки данных. Надо проанализировать при этом процессе порядок прохождения событий.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #11 - 10. Января 2007 :: 09:54
Печать  
У меня - ТабличноеПоле.ОбновитьСтроки()
Т.е. я так понимаю - не поставщик?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #12 - 10. Января 2007 :: 10:50
Печать  
DmitrO писал(а) 10. Января 2007 :: 05:53:
Мне причина проблемы не понятна. Просто нечто подобное было замечено ранее.
Сейчас могу только высказать предположение, что сама запись объекта тут скрее всего непричем. Имхо копать надо в сторону того что после записи объекта обычно идет установка позиции текущей строки на записанный объект методом поставщика Обновить (признайтесь у вас ведь так сделано Улыбка). Вот при таком позиционировании ТП полностью перечитывает все строки данных. Надо проанализировать при этом процессе порядок прохождения событий.

Да, точно, после записи элемента форма списка пытается на нём спозиционироваться. Но ошибка при этом вываливается далеко не всегда.  Мне например повторить ни разу не удалось, хотя я очень старался  Улыбка
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка в ТП. Странная и трудноуловимая.
Ответ #13 - 10. Января 2007 :: 15:00
Печать  
Могу и ошибаться, но дело может быть в том, что обновление по таймеру случайно пересекается с интервалом записи в базу. Может попробовать до записи отключать таймер, а после записи включить?
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать