|
|
#1 |
|
Участник
|
AX2009. Код для падения сервера
Странно, но факт. Этот код при выполнении вызывает падение АОS.
Код: static void Job1(Args _args)
{
RHRMOrderTable rHRMOrderTable;
RHRMOrderTrans rHRMOrderTrans;
AZT_OrderTransEmpl OrderTrans;
;
select orderTrans
order by EmplName
where rHRMOrderTable.RecId == orderTrans.OrderTableRecId
&& (!rHRMOrderTrans || rHRMOrderTrans.RecId == orderTrans.RecId);
}В Ах4 отчеты с подобным запросом работали на ура. |
|
|
|
|
#2 |
|
Участник
|
В третьей версии Аксапты подобный запрос так же как в AX 4 отрабатывает без ошибки, но мне кажется, что запрет использования табличной переменной в условии запроса(where...) без указания конкретного поля в AX 2009 вполне логичным и правильным. Скорее всего, этот нюанс в пятой версии Аксапты был устранен.
А вообще запрос, по-моему, не очень корректный, т.к. табличная переменая rHRMOrderTrans в любом случае окажется пустой. Возможно так было бы правильней: X++: select orderTrans join rHRMOrderTable where rHRMOrderTable.RecId == orderTrans.OrderTableRecId outer join rHRMOrderTrans where rHRMOrderTrans.RecId == orderTrans.RecId;
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 01.12.2010 в 15:42. |
|
|
|
|
#3 |
|
Участник
|
|
|
|
|
|
#4 |
|
Участник
|
Цитата:
Цитата:
Если можно, то чем этот код отличается от приведенного выше? Точно такое же условие.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 01.12.2010 в 15:37. |
|
|
|
|
#5 |
|
Участник
|
Но ведь табличная переменная не используется в запросе, следовательно ничем не отличается от любой другой переменной. Такое выражение сначала преобразуется в true или false (в данном случае false) и после этого подставится в запрос. По крайне мере в 3.0 так. Про переменную, которая используется в запрос, насколько я понял, речи не идет.
|
|
|
|
|
#6 |
|
Ищущий знания...
|
вообще на форуме уже обсуждался вопрос про использование неявного преобразования (не могу найти ссылку
), и в частности про условие существования записи в таблице.Т.е. использование синтаксиса : X++: if (inventTrans)X++: if (inventTrans.RecId != 0)X++: if (inventTrans.RecId != 0)X++: where (rHRMOrderTrans.RecId == 0 || rHRMOrderTrans.RecId == orderTrans.RecId)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#7 |
|
Участник
|
Цитата:
Сообщение от Lucky13
Но ведь табличная переменная не используется в запросе, следовательно ничем не отличается от любой другой переменной. Такое выражение сначала преобразуется в true или false (в данном случае false) и после этого подставится в запрос. По крайне мере в 3.0 так. Про переменную, которая используется в запрос, насколько я понял, речи не идет.
А по поводу Ax2009 было сделано предположение об устранении возможности использования табличной переменной в условии запроса без указания конкретного поля.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 01.12.2010 в 15:56. |
|
|
|
|
#8 |
|
Ищущий знания...
|
нашел ссылку на тему Проверка на RecId
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#9 |
|
Участник
|
2 lev. Это понятно, но такая ситуация редкость и она не приводит к падению AOS, здесь же показано, что код гарантировано приведет к падению AOS. Нехорошо как-то
|
|
|
|
|
#10 |
|
Ищущий знания...
|
Цитата:
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#11 |
|
Участник
|
|
|
|
|
|
#12 |
|
Участник
|
Цитата:
Интересно узнать, как данный запрос выполняется у других участников в AX2009.
__________________
С уважением, Александр. |
|
|
|
|
#13 |
|
Banned
|
Теоретики... Неужели больше заняться нечем?
|
|
|
|
|
#14 |
|
Участник
|
|
|
|
|
|
#15 |
|
Banned
|
Зачем мучать себя и Microsoft вещами, для которых есть явный workaround? Лучше сконцентрировать внимание на функционале, том, что реально волнует клиентов. К тому же, мы в компании такой SQL просто не пишем. В голову не приходит.
|
|
|
|
| За это сообщение автора поблагодарили: S.Kuskov (2). | |
|
|
#16 |
|
Участник
|
Ну соглашусь, что бага не очень критичная.
Но меня всегда напрягало падение Аксапты, особенно аоса. Таких ошибок не должно быть по определению. |
|
|
|
| За это сообщение автора поблагодарили: player (1). | |
|
|
#17 |
|
MCP
|
А на какой версии Ax2009 падает? Какая версия ядра? В последних обновлениях это вроде исправлено, по крайней мере 3 месяца мне мой когллега точно таким же способом демонстрировал несовершенство версии моего непропатченного ядра и стандартного приложения
У меня падало, у него стоял AOS со всеми обновлениями - работало.
|
|
|
|
|
#18 |
|
Участник
|
Ключевое слово в исходном сообщении было : Падение AOS
|
|
|
|
|
#19 |
|
Участник
|
Вообще-то именно этот вариант заваливания именно этой версии АОСа уже обсуждался - см. Как завалить AOS AX 2009
|
|
|
|
|
#20 |
|
Участник
|
Цитата:
Сообщение от gl00mie
Вообще-то именно этот вариант заваливания именно этой версии АОСа уже обсуждался - см. Как завалить AOS AX 2009
Или когда будет исправлено |
|
|