22.09.2005, 19:58 | #1 |
Участник
|
Изменение Query у некоторых пользователей
AXAPTA 2.5 SP3 трехзвенка
Класс на базе RunBaseBatch. Выполняется на стороне сервера. В методе New вручную строится Query примерно такого вида PHP код:
НО! У некоторых пользователей (т.е. при входе в AXAPTA под их логином) если пользователь изменил Range перед выполнением класса, то из результирующего Query пропадает клауза GROUP BY. Если Range вообще не задавать (перед этим очистив "объекты в использовании"), то GROUP BY на месте. Что делал: -) currentVersion - менял -) выполнение на клиента переносил -) класс переименовывал, удаляю старую копию из AOT -) "сомнительного" пользователя удалял и создавал заново Обошел глюк создав дополнительный group by custTable.Code. Первый GROUP BY по прежнему пропадает, но второй не дает "испортить" результат. Это не есть решение. Так, "заплатка". Поэтому хотелось бы все-таки узнать в чем причина подобного глюка. AXAPTA 2.5 SP3 |
|
22.09.2005, 20:24 | #2 |
Moderator
|
Цитата:
В методе New вручную строится Query
|
|
22.09.2005, 20:31 | #3 |
Участник
|
А зачем MIN(code)?
__________________
Axapta v.3.0 sp5 kr2 |
|
23.09.2005, 10:13 | #4 |
Модератор
|
Владимир! Обрати внимание: когда пользователи меняют квери, у них есть 2 закладки: условия и сортировка. Возможно, они сами что-то в сортировке меняют или она сама сбрасывается?
С Уважением, Георгий |
|
23.09.2005, 11:01 | #5 |
Участник
|
PHP код:
RTG_PR_ManagementClientTable - это таблица созданная уже в нашей копии AXAPTA. Не стандартный функционал. MIN(code) - это просто перестраховка. На результат не должно влиять никак. Пробовал убирать MIN() - никаких изменений. Я сам заходил под лигином пользователя и эффект был тот же. Т.е. даже не надо менять RANGE. Достаточно просто открыть SysQueryForm и ничего не меняя тут же нажать "Ok". Все. Group By - вылетает. Получается, какие-то проблемы именно с SysQueryForm под логином некоторых пользователей. Я уже делал инкрементную компиляцию RunBase и самой формы SysQueryForm - не помогает. Проверяю, что же получилось в результате в метод main() PHP код:
Если бы это происходило у ВСЕХ пользователей, то было бы как-то понятно, что это где-то я ошибся. Но почему это происходит у некоторых? |
|
23.09.2005, 11:13 | #6 |
Участник
|
MIN(code) влияет на сам запрос на сервер - select MIN(code), code. Т.е. поле дополнительно. Ну да бог с ним.
Наверное придется смотреть, что формирует SysQuery при упаковке и распаковке запроса
__________________
Axapta v.3.0 sp5 kr2 |
|
23.09.2005, 11:45 | #7 |
NavAx
|
Цитата:
Если бы это происходило у ВСЕХ пользователей, то было бы как-то понятно, что это где-то я ошибся. Но почему это происходит у некоторых?
ЗЫ. У нас наблюдались более интересные вещи, которые лечились удалением *.aoc файлов. |
|
23.09.2005, 12:31 | #8 |
Участник
|
В результате "раскопок" выяснилось следующее.
Пользователь использует группу, которой запрещен доступ к таблице RTG_PR_ManagementClientTable. Если в группе дать права на доступ к этой таблице, то Query строится нормально. Но тогда возникает вопрос, а почему вообще запрос выполняется? Пусть и "искореженный", но тем не менее... Попробовал при построении запроса использовать query.allowCheck(false); Не помогло Да, удаление *.aoc эффекта не дает. |
|
23.09.2005, 14:55 | #9 |
Участник
|
Ещё в качестве идеи: не сбрасывается ли фильтр при проходе через механизм RLP, если он у вас настроен на эти таблицы и отрабатывает на запросе?..
|
|
23.09.2005, 14:57 | #10 |
Участник
|
Если на этом Query у вас отрабатывает механизм RLP, имеет смысл посмотреть, что у него на входе, что на выходе
|
|