16.01.2009, 13:35 | #21 |
Moderator
|
Вот-вот! Тоже не уверены?
А оно так и есть. Понятно, что можно исправить имя на любое, но кто об этом специально заботится без особой нужды? Вот создал картинку, дабы запомнить навсегда про эту "_1": Ну, и теперь, раз уж пошла успешно дифференциальная диагностика, то можно и другие выводы закрепить: Цитата:
hated8, ну, а у Вас-то заработало наконец с _1?? |
|
16.01.2009, 14:05 | #22 |
Участник
|
Наканецта!!!!!!!!
Ларчик просто открывался! qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable)); qbds.addDataSource(tablenum(RAssetLocation)); this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))'); this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(fieldNum(RAssetLocation, userGroupId)).value( (select groupId from UserGroupList where UserGroupList.UserId == currentUserId).groupId ); Спасиб огромное всем за помощь!!! |
|
16.01.2009, 14:11 | #23 |
Moderator
|
Не очень понял... так про "убрать RAssetLocation" мы давно уже говорили и вроде не помогало?... А суффикс "_1" , смотрю, так и не понадобился?
|
|
16.01.2009, 14:16 | #24 |
Участник
|
вся проблема была в том что я делал:
qbds.addDataSource(tablenum(RAssetLocation)); qbds.addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))'); поменял qbds на this.query().dataSourceTable(tablenum(RAssetLocation)) и стало счастье!) |
|
16.01.2009, 14:44 | #25 |
MCITP
|
Цитата:
Но с qbds.name() как-то уверенности больше!
__________________
Zhirenkov Vitaly |
|
16.01.2009, 15:43 | #26 |
Moderator
|
Цитата:
По крайней мере, в AX 3.0 SP4. Может, в 4-ке хавает? У меня же в 3-ке вот так - только с "_1": X++: static void Job129(Args _args) { Query query = new Query(); QueryBuildDatasource qbds = new QueryBuildDatasource() ; QueryRun qr; ; qbds = query.addDataSource(tablenum(RAssetTransferTable)); // НЕ РАБОТАЕТ // qbds.addRange(fieldnum(RAssetTransferTable,RecId)) // .value(@'(RAssetTransferTable.TransDate==29\12\2008)'); // РАБОТАЕТ - c _1 qbds.addRange(fieldnum(RAssetTransferTable,RecId)) .value(@'(RAssetTransferTable_1.TransDate==29\12\2008)'); qr = new QueryRun(query); qr.userUpdate(false); qr.prompt(); box::info(strFmt('Кол-во записей: %1', sysQuery::countLoops(qr))); } |
|
16.01.2009, 16:33 | #27 |
Moderator
|
Цитата:
Сообщение от hated8
вся проблема была в том что я делал:
qbds.addDataSource(tablenum(RAssetLocation)); qbds.addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))'); поменял qbds на this.query().dataSourceTable(tablenum(RAssetLocation)) и стало счастье!) Оператор this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(...) добавлял диапазон уже к датасорсу от RAssetLocation, в которой поле Location присутствует и поэтому счастье стало возможным и без имени датасорса. Если же сейчас то попробовать "==Location" с именем датасорса, то, почти уверен, что "==RAssetLocation.Location" вызовет ошибку, а "==RAssetLocation_1.Location" отработает нормально. Попробуете? (для завершенности эксперимента). Вы меня спросите, а почему же работает без _1 имя RAssetTransferTable? Я отвечу: "Она приезжала в Москву в командировку!" (шутка!) Я отвечу: потому что, вероятно, имя датасорса от таблицы RAssetTransferTable было исправлено на "без _1" в том таинственном this.query(), к которому всё пристраивается. Либо это датасорс формы, в котором _1 не добавляется при перетаскивании в него таблицы (первого экземпляра! а ко второму (!) уже добавляется "единичка", но без подчеркинания). |
|
|
За это сообщение автора поблагодарили: ZVV (1). |
16.01.2009, 16:34 | #28 |
MCITP
|
Цитата:
Сообщение от Gustav
Да вот не хавает
По крайней мере, в AX 3.0 SP4. Может, в 4-ке хавает? У меня же в 3-ке вот так - только с "_1": X++: static void Job129(Args _args) { Query query = new Query(); QueryBuildDatasource qbds = new QueryBuildDatasource() ; QueryRun qr; ; qbds = query.addDataSource(tablenum(RAssetTransferTable)); // НЕ РАБОТАЕТ // qbds.addRange(fieldnum(RAssetTransferTable,RecId)) // .value(@'(RAssetTransferTable.TransDate==29\12\2008)'); // РАБОТАЕТ - c _1 qbds.addRange(fieldnum(RAssetTransferTable,RecId)) .value(@'(RAssetTransferTable_1.TransDate==29\12\2008)'); qr = new QueryRun(query); qr.userUpdate(false); qr.prompt(); box::info(strFmt('Кол-во записей: %1', sysQuery::countLoops(qr))); } я с такими проблемами не сталкивался, всё по той же причине - всегда использую qbds.name(), для надёжности.
__________________
Zhirenkov Vitaly |
|
16.01.2009, 16:49 | #29 |
MCITP
|
Не, ZVV таки похоже был неправ, даже не знаю откуда у него сложилось такое впечатление..
__________________
Zhirenkov Vitaly |
|