Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Зацикливание запросов при выполнении поиска по номеру (число прочтений - 4590 )
Alert
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 17. Января 2009
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #15 - 18. Января 2009 :: 17:12
Печать  
leshik писал(а) 19. Декабря 2008 :: 05:15:
У клиента возникла проблема - не ищется по номеру документ ...


У нас после праздников возникла таже проблема.
Твоя информация помогла мне разобраться с проблемой, если еще актуально пиши.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #16 - 18. Января 2009 :: 18:55
Печать  
Интересно конечно!
Пиши - буду рад видеть решение!
  
Наверх
IP записан
 
Alert
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 17. Января 2009
Пол: Мужской
Re: Зацикливание запросов при выполнении поиска по номеру
Ответ #17 - 18. Января 2009 :: 20:22
Печать  
В инете ничего полезного, кроме твоей статьи, не нашел. Поэтому пошел по твоим следам, что сэкономило мне время - спасибо!
У меня были теже симптомы и собствинно трассировка выдала теже запросы, но перед запросом выборки документов
leshik писал(а) 19. Декабря 2008 :: 05:15:
...
готовится курсор первичной выборки:
Код
Выбрать все
Select * from _1SJOURN(NOLOCK INDEX=DOCNO) where DNPREFIX=@P1 and DOCNO=@P2 order by DNPREFIX, DOCNO, ROW_ID 


далее идет перебор DNPREFIX и номера документа
и генерируется цепочка ...


у меня шел еще один запрос (у тебя он тоже жолжен быть).
Это запрос (очень странно построен, жаль не могу привести его код) делает выборку всех документов в диапазоне поля DATE_TIME_IDDOC и сортировкой по нему. После чего читает 1-ю и последнюю запись результата запроса. Суть его выбрать 1-ю и последнюю дату документов, но что для меня осталось загадкой - зачем 1С-цы устанавливали диапазон дат в условии.
Далее у меня шел тот же странный перебор префиксов документов с загадочным -471. 1-м запросом 1С получает начальную и конечную дату, а далее начинает свой безумный перебор (наверное по привычке работы с DBF). То что в запросах есть два префикса "    5941    " и "   5941-471  " - это попытка поймать документы с нумерацией без периода и с периодом в год (у тебя данный документ нумеруется в пределах года). Но вот незадача, почему -471? А дело в том, что каким-то чудесным образом 1С умудрилась записать документ в журнал 18 веком и собственно если произвести вычитание из 1-й даты документа некоторой начальной даты системы отсчета, то мы получим -471 лет (это мое предположение почему -471). В коде, скорее всего, из-за отрицательного числа происходит зацикливание, поэтому 1С впадает в транс пытаясь изнасиловать MSSQL. Если бы при разработке 1С думали о построении запросов, то она бы и летала шустрее и таких бы косяков не было.

К сожалению я отдыхал когда это случилось и мне не удалось установить причину в следствии чего документ был помещен в журнал раней датой.

Лекарство.
Нужно найти в журнале некорректные даты документа(ов) и поправить на правильные. Скорее всего у тебя сами документы в таблицах DH??? будут записаны правильной датой.

Удачи!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать