*** Вынесено из 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;
}
Но ето неудобно . Подскажите пожалуйста , как сделать запрос чтобы за один раз можно было взять всех записей , так со InventTrans'ом и так и без него ...
Заранее спасибо !