Доброго времени суток.
Столкнулся со странной проблемой..
Возьму, для примера, частный случай.
Датасет наполняется 590-ми записями, соответственно всего будет 15 страниц.
Теперь нажимаю на "перейти на следующую страницу"... профайлер показывает "select top 80 ..."(как бы все верно), но визуальное наполнение страници не меняется! если пойти дальше по страницам то все вроде нормально, но 1 и 2 страници одинаковы...
Далее, при выполнения одного действия, функция проходит по датасету и ставит им в поле одно и тоже значение, скажем IsCurrent = true. теперь выполняем фильтр по аля где IsCurrent и видим что таких записей 550! если же сделать фильтр по !IsCurrent находим 40 "пропавших" записей!
Быстрый фильтр(на гриде) также показывает те записи, которые визуально увидеть нельзя(проходя по страницам).
Самое туманное то, что если ходить по группировки слева(в зависимости от записи на которой стоим накладывается фильтр на датасет главного реестра), то такое впечатление, что работает рэндомно.. при некоторых наборах на 2-ую страницу переходит, при некоторых нет.
Подскажите что-нибудь, с чем это может быть связано?. Заранее спасибо за ответ.
Версия: 3.2.2.3
Нравится
добрый день.
Спасибо за Ваш вопрос.
После тестирования на версии Terrasoft CRM 3.2. заявленой Вами проблемы, мы не смогли ее воспроизвести. Пожалуйста, проверьте в profiler, не включены ли в Select какие-либо фильтры и имеет ли пользователь права на просмотр всего количества записей.
Будем рады ответить на все Ваши дополнительные вопросы.
Terrasoft Support Team
вот оригинальный текст запроса, который показывает profiler при нажатии "перейти на след. страницу":
exec sp_executesql N'SELECT TOP 80 [tbl_FinalTempPrice].[ID] AS [ID], [tbl_FinalTempPrice].[Name] AS [Name], [tbl_FinalTempPrice].[Price] AS [Price], [tbl_FinalTempPrice].[IsAvailable] AS [IsAvailable], [tbl_FinalTempPrice].[SupplierID] AS [SupplierID], [tbl_FinalTempPrice].[OldPrice] AS [OldPrice], [tbl_FinalTempPrice].[CurrencyBool] AS [CurrencyBool] FROM [dbo].[tbl_FinalTempPrice] AS [tbl_FinalTempPrice] WHERE([tbl_FinalTempPrice].[SupplierID] = @P1) ORDER BY 4 ASC',N'@P1 nvarchar(38)',N'{722EE8B5-E5DD-450A-9492-999170AFCC7A}'
после этого набор на второй странице остается темже.
Это происходит в новосозданом разделе. Никогда не сталкивался с подобной проблемой в системе. По поводу постраничной выгрузки все всегда отрабатывало корректно. Но сейчас происходит все так, как я описал(при чем только на некоторых наборах О_о, что и затрудняет поиск бага). Такая ошибка происходит только в новом разделе(насколько я тестировал по всей системе). Перепроверял все (отключал/включал события), методов ни на датасете, ни на гриде нету, все свойства обоих как поумолчанию, профайлер показывает только один, выше описанный запрос... подскажите чем в принципе может быть вызвана такая реакция?
Заранее спасибо за помощь.
PS. Если пользователь не имел бы прав на просмотр записей(хотя он в моем случае он администратор), то он бы не увидел их при помощи пользовательского фильтра, а он это сделать может :(
Баг повержен!
Повержен он следующим кодом (на датасете реестра):
function ds_FinalTempPriceOnDatasetAfterOpen(Dataset) { Dataset.DataFields.ItemsByName('Name').OrderType = 1; Dataset.DataFields.ItemsByName('Name').OrderPosition = 0; }
Проблема была в сортировки. точнее в том, что сортировка была по полю IsAvailable.. На первых двух страницах это поле одинаковое(хотя правда и на остальных тоже). и когда мы переходили на вторую страницу для select top 80 вторыми 40-мя записями становились те, которые он выбирал при select top 40... вообще это, конечно, тоже странно... пытался повторить тоже самое на Контактах или Контраагентах - не вышло... возможно это связано с тем как лежат данные в таблице...