20.08.2009, 12:32 | #1 |
Участник
|
Как работает queryRun
Доброго дня,
у меня имеет место странное поведение запроса. Ситуация следующая- есть код: X++: q = new Query(inventSum_ds.queryRun().query()); qbds = q.dataSourceTable(tablenum(InventDim)); qbds.findRange(fieldnum(InventDim, InventLocationId)).value(_inventLocationId); qbds.findRange(fieldnum(InventDim, InventReserveCode)).value(_reserveCode); qr = new Queryrun(q); while(qr.next()) { inventSumLocal = qr.get(tablenum(InventSum)); } SELECT SUM(A.POSTEDQTY),SUM(A.POSTEDVALUE),SUM(A.PHYSICALVALUE),SUM(A.DEDUCTED),SUM(A.REGISTERED),SUM(A.RECEIVED), SUM(A.PICKED),SUM(A.RESERVPHYSICAL),SUM(A.RESERVORDERED),SUM(A.ONORDER),SUM(A.ORDERED),SUM(A.ARRIVED),SUM(A.QUOTATIONRECEIPT), SUM(A.QUOTATIONISSUE),SUM(A.PHYSICALINVENT),SUM(A.AVAILPHYSICAL), SUM(A.AVAILORDERED),A.ITEMID, B.INVENTCOLORID,B.INVENTLOCATIONID,B.INVENTBATCHID,B.WMSLOCATIONID,B.WMSPALLETID,B.INVENTSERIALID,B.INVENTGTDID_RU, B.INVENTRESPPERS,B.INVENTPOSTINGPROFILE,B.INVENTDIMDEFECT,B.INVENTRESERVECODE FROM INVENTSUM A,INVENTDIM B,WMSLOCATION C WHERE((A.DATAAREAID='pld')AND((A.CLOSED=0)AND(A.ITEMID='000007')))AND((B.DATAAREAID='pld')AND (((((B.INVENTLOCATIONID='1001')AND(B.INVENTRESERVECODE='All'))AND(B.INVENTCOLORID='Черный/бордо'))AND(B.INVENTDIMDEFECT='ОК'))AND(A.INVENTDIMID=B.INVENTDIMID)))AND ((C.DATAAREAID='pld')AND(((C.LOCATIONTYPE=0)AND(B.INVENTLOCATIONID=C.INVENTLOCATIONID))AND(B.WMSLOCATIONID=C.WMSLOCATIONID))) GROUPBY A.ITEMID,B.INVENTCOLORID,B.INVENTLOCATIONID,B.INVENTBATCHID,B.WMSLOCATIONID,B.WMSPALLETID,B.INVENTSERIALID, B.INVENTGTDID_RU,B.INVENTRESPPERS,B.INVENTPOSTINGPROFILE,B.INVENTDIMDEFECT,B.INVENTRESERVECODE ORDERBY A.ITEMID,B.INVENTCOLORID,B.INVENTLOCATIONID,B.INVENTBATCHID,B.WMSLOCATIONID,B.WMSPALLETID,B.INVENTSERIALID, B.INVENTGTDID_RU,B.INVENTRESPPERS,B.INVENTPOSTINGPROFILE,B.INVENTDIMDEFECT,B.INVENTRESERVECODE Другими словами, складские остатки по заданному складу в ячейках хранения. Проблема в том, что SQL query через queryAnalyzer или запрос переписанный через while select выдают одну строку, тогда как проход while(qr.next())выполняется два раза, хотя получаемые значения не изменяются. Что интересно, так это то, что в форме данный запрос отрабатывает правильно. Возникает вопрос, как с этим бороться и как вообще работает queryRun. Спасибо! |
|
Теги |
query, queryrun, баг, запрос (query), crm2011 |
|
|