19.09.2005, 15:36 | #1 |
Moderator
|
Кэширование в InventDimPhys
Добрый день!
Столкнулся с такой ситуацией : отчет Физ. наличие по складам (InventDimPhys) работает корректно через раз, т.е. допустим если первый раз по выбранным критериям он отработал корректно, то после этого, если поменять критерии, отчет формируется точно такой же как и предыдущий. Возникает подозрение что запрос кэшируется! Только не пойму где? |
|
19.09.2005, 17:00 | #2 |
Участник
|
Нет запрос не кэшируется. Каждый раз заново отрабатывается на сервере.
О каких критериях идет речь?
__________________
Axapta v.3.0 sp5 kr2 |
|
19.09.2005, 17:17 | #3 |
Moderator
|
Цитата:
Изначально опубликовано AndyD
Нет запрос не кэшируется. Каждый раз заново отрабатывается на сервере. В методе newQueryInventSum таблицы InventDim PHP код:
PHP код:
PHP код:
Непойму как убрать дублирование.. |
|
19.09.2005, 17:31 | #4 |
Участник
|
А можно узнать, что это за объект такой InventItemRangeDenorm?
__________________
Axapta v.3.0 sp5 kr2 |
|
19.09.2005, 17:35 | #5 |
Moderator
|
InventItemRangeDenorm -- это таблца соответствия между уровнями классификатора и кодом номенклатуры. (Одной записи из InventTable соответствует несколько из InventItemRangeDenorm)
|
|
19.09.2005, 17:41 | #6 |
Участник
|
Как я понял - это ваша таблица. А как вы добавляете ее в запрос? В коде или ч/з AOT?
__________________
Axapta v.3.0 sp5 kr2 |
|
19.09.2005, 17:48 | #7 |
Moderator
|
Да, таблица моя!
Добавляю в диалоге отчета, кнопка Выбор, далее на таблице Картотека номенклатуры правой клавишей и выбираю свою таблицу. Далее внизу формочки с критериями запроса создаю строку для моей таблицы, выбираю таблицу, поле, присваиваю значение. OK. И поле отображается в форме диалога отчета. |
|
19.09.2005, 18:08 | #8 |
Участник
|
Значения выбора сохраняются в SysLastValue для отчета InventDimPhys
__________________
Axapta v.3.0 sp5 kr2 |
|
19.09.2005, 18:13 | #9 |
Участник
|
Кстати, в нормальном состоянии критерии выбора формируются заново, так что вы, скорее всего, добавляете новый вместо того, чтобы использовать существующий
__________________
Axapta v.3.0 sp5 kr2 |
|
20.09.2005, 09:53 | #10 |
Moderator
|
Цитата:
Изначально опубликовано AndyD
Кстати, в нормальном состоянии критерии выбора формируются заново, так что вы, скорее всего, добавляете новый вместо того, чтобы использовать существующий Вопрос как раз и сводится к тому -- почему когда я меняю значение критерия, оно не обновляется в запросе, а добавляется новое? (Со всеми вытекающими) Причем я не создаю новую строчку с критерием, а просто меняю значение в существующей. Одним из решением этой проблемы я видел в отмене кэширования, другой -- в том чтобы разобраться почему критерий добавляется а не обновляется. |
|
20.09.2005, 10:08 | #11 |
Участник
|
Хм.. Странно. У меня при изменении критерия он не добавляется, а изменяет существующее значение в запросе.
Может быть какие-то модификации в SysQuery или SysQueryForm?
__________________
Axapta v.3.0 sp5 kr2 |
|
20.09.2005, 10:12 | #12 |
Moderator
|
Модификаций в SysQuery или SysQueryForm нет!
Причем если смотреть как ведет себя поле 'склад', то видно что все корректно -- поменяли в критерии -- поменялся в запросе. И совсем другое дело с моей таблицей. |
|
20.09.2005, 10:29 | #13 |
Участник
|
Я бы предложил для начала в классе SysQuery метод unpackDataSource() посмотреть как формируется запрос после подтверждения изменения.
Если там все чисто, то надо искать, что происходит при закрытии диалога
__________________
Axapta v.3.0 sp5 kr2 |
|
20.09.2005, 10:32 | #14 |
Moderator
|
Спасибо! О результатах напишу!
|
|
20.09.2005, 13:06 | #15 |
Moderator
|
SysQuery.unpackDataSource
PHP код:
|
|
20.09.2005, 13:52 | #16 |
Участник
|
Нет не здесь. Дальше идет такой вызов
PHP код:
__________________
Axapta v.3.0 sp5 kr2 |
|
20.09.2005, 14:53 | #17 |
Moderator
|
Рекурсия однако!
Приятно от того что начал понимать как формируется запрос! |
|
20.09.2005, 15:13 | #18 |
Участник
|
Особенно если учесть, что кроме рекурсии там пара прямых вызовов, то разбираться становится еще веселее
__________________
Axapta v.3.0 sp5 kr2 |
|
21.09.2005, 09:21 | #19 |
Участник
|
Как дела? Удалось выяснить причину?
__________________
Axapta v.3.0 sp5 kr2 |
|
21.09.2005, 09:34 | #20 |
Moderator
|
Как с этим жить и бороться
1. Существующий запрос срабатывает корректно на второй раз (потому как получается два абсолютно одинаковых условия в запросе) 2. Подумываю о реализации запроса через InventItemRangeRef (связь с классификатором по RecId) Предположения о причинах (восстановления старого значения в запросе): 3. два запроса (с закешированным значением и новым значением) образуются из-за того что между Картотекой номенклатуры (InventTable) и моей таблицей соответствия (InventItemRabgeDenorm) два поля для связи (ItemId и InventItemRangeId) 4. Фича такая Спасибо за содействие! |
|