![]() |
#1 |
Участник
|
От перестановки условий меняется результат
На АХ4 и АХ2009 замечен интересный глюк. Результат запроса в цикле зависит от положения полей в условии.
PHP код:
1 11365 |
|
|
За это сообщение автора поблагодарили: mazzy (2), Maximin (2), lev (1). |
![]() |
#2 |
Участник
|
прикольно. подтверждаю.
|
|
![]() |
#3 |
Участник
|
Цитата:
У таблицы EmplTable стандартная установка CahceLookup = Found Первый select совпадает с PrimaryIndex, а второй нет. Поэтому кэширование на первый влияет, а на второй - нет. Поставьте CahceLookup = NotInTTS (примечание - это очень плохо подействует на расчет зарплаты в модуле RPay) Последний раз редактировалось mazzy; 21.06.2011 в 12:30. Причина: добавил примечание про RPay |
|
![]() |
#4 |
Ищущий знания...
|
на Ах3.0 SP3 то же самое
![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#5 |
Ищущий знания...
|
Цитата:
Сообщение от mazzy
![]() Это побочный эффект от кэширования.
У таблицы EmplTable стандартная установка CahceLookup = Found Первый select совпадает с PrimaryIndex, а второй нет. Поэтому кэширование на первый влияет, а на второй - нет. Поставьте CahceLookup = NotInTTS (примечание - это очень плохо подействует на расчет зарплаты в модуле RPay) попробовал установить CahceLookup = NotInTTS - тот же эффект ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#6 |
Боец
|
Поставьте между SELECT'ами:
X++: ...
emplTable = null;
... X++: ...
emplTable.EmplId = '';
... |
|
![]() |
#7 |
Участник
|
|
|
![]() |
#8 |
Участник
|
Цитата:
странно. |
|
![]() |
#9 |
Ищущий знания...
|
Цитата:
![]() написал джоб через query нормально отрабатывает при любом положении условий: X++: static void Job47(Args _args) { Query query = new Query(); QueryBuildDataSource qbds = query.addDataSource(tableNum(EmplTable)); QueryRun queryRun; ; qbds.addRange(fieldNum(EmplTable, RecId)).value(strFmt('(%1 == %2)', fieldStr(EmplTable, EmplId), fieldStr(EmplTable, PayMainEmplId_Ru))); info(qbds.toString()); queryRun = new QueryRun(query); info(strFmt('%1', SysQuery::countLoop(query.pack()))); qbds.clearRange(fieldNum(EmplTable, RecId)); qbds.addRange(fieldNum(EmplTable, RecId)).value(strFmt('(%1 == %2)', fieldStr(EmplTable, PayMainEmplId_Ru), fieldStr(EmplTable, EmplId))); info(qbds.toString()); queryRun = new QueryRun(query); info(strFmt('%1', SysQuery::countLoop(query.pack()))); }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#10 |
Ищущий знания...
|
ага. Сейчас нет под рукой 2009 ахи чтоб попробовать.
но в Ax3.0 перепробовал все значения свойства CahceLookup результат всегда один ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#11 |
Участник
|
Нормально отработает при добавлении любого дополнительного условия
например "&& emplTable.EmplId" Но именно в таком виде - не правильно |
|
![]() |
#12 |
Участник
|
mazzy прав - дело в кэше.
Попробуйте вызвать emplTable.disableCache(true); перед проблемным запросом
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: lev (2). |
![]() |
#13 |
Ищущий знания...
|
в Ах 3.0 это помогло!
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
![]() |
||||
Тема | Ответов | |||
Меняется шрифт при печати отчетов на принтере | 4 | |||
непонятный результат str2date | 19 | |||
Результат обработки закупки на возврат | 6 | |||
Результат зароса в грид | 2 | |||
Передача условий в отчет | 4 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|