04.01.2012, 11:43 | #1 |
Участник
|
Запрос к InventSum с InventLocationId
*** Вынесено из InventLocationId в InventTrans, sukhanchik ***
Здраствуйте , Мы сделали InventLocationId в InventSum'е . Помогло и облегчило дело с рапоратми по складам . Хотел попросить совета . Бухалтерия требует отчетов складов , в которых были остатки в начяле периода и остатки в конце . Я сделаю такое в одной из своей классе : X++: Query qInvSum1( Query qry ) { QueryBuildDataSource qBSSum, qBSTrn; ; qBSSum = qry.dataSourceTable( TableNum( InventSum ) ); qBSSum.addSortIndex( indexnum( InventSum, LocateItemIdx ) ); qBSSum.indexIsHint( true ); qBSTrn = qBSSum.addDataSource( tableNum( InventTrans ) ); qBSTrn.addLink( fieldNum( InventTrans, InventDimId ), fieldNum( InventSum, InventDimId ) ); qBSTrn.addLink( fieldNum( InventTrans, ItemId ), fieldNum( InventSum, ItemId ) ); qBSTrn.addSortIndex( indexNum( InventTrans, DimIdIdx ) ); qBSTrn.indexIsHint( true ); qBSTrn.joinMode( JoinMode::ExistsJoin ); qBSTrn.firstOnly( true ); qBSTrn.fetchMode( QueryFetchMode::One2One ); qBSTrn.addRange( fieldNum( InventTrans, DatePhysical ) ).value( queryRange( dBgn, dateMax() ) ); return qry; } Дело в том что некоторые товары из InventSum может быть неподвигались и в InventTrans'e нету записей с ними . Тогда я вынужден сделать второй запрос : X++: Query qInvSum2( Query qry ) { QueryBuildDataSource qBSSum, qBSTrn; ; qBSSum = qry.dataSourceTable( TableNum( InventSum ) ); qBSSum.addSortIndex( indexnum( InventSum, LocateItemIdx ) ); qBSSum.indexIsHint( true ); qBSSum.addRange( fieldNum( InventSum, PhysicalInvent ) ).value( queryvalue( '!= 0' ) ); qBSTrn = qBSSum.addDataSource( tableNum( InventTrans ) ); qBSTrn.addLink( fieldNum( InventTrans, InventDimId ), fieldNum( InventSum, InventDimId ) ); qBSTrn.addLink( fieldNum( InventTrans, ItemId ), fieldNum( InventSum, ItemId ) ); qBSTrn.addSortIndex( indexNum( InventTrans, DimIdIdx ) ); qBSTrn.indexIsHint( true ); qBSTrn.joinMode( JoinMode::NoExistsJoin ); qBSTrn.firstOnly( true ); qBSTrn.fetchMode( QueryFetchMode::One2One ); qBSTrn.addRange( fieldNum( InventTrans, DatePhysical ) ).value( queryRange( dBgn, dateMax() ) ); qBSTrn.addRange( fieldNum( InventTrans, DatePhysical ) ).value( queryvalue( strfmt( ">=%1", dBgn ) ) ); return qry; } Заранее спасибо ! Последний раз редактировалось sukhanchik; 06.01.2012 в 00:20. |
|