Стандартные функции наличия
Добавлено: 03 фев 2005, 07:17
Уважаемые коллеги, кто использует сабж - подскажите, где не прав.
Пробую получить наличие по подразделению, равное стандартному. В своем интерфейсе определяю дату (datenal) и подразделение (_cpodr). Наличие получаю функцией NalT ( она возвращает результат в разрезе партий - то что мне надо):
InitMCInfo(datenal) ;
_loop SklOrder where ((0 == SklOrder.sp AND _cpodr == SklOrder.cpodr AND datenal >>= SklOrder.dord))
{
_loop SpOrder where ((SklOrder.nrec == SpOrder.CSKLORDER))
{
kolvo := NalT ( datenal,
SpOrder.cMC,
_cpodr,
if (SpOrder.ccMol =0,comp(-1),SpOrder.ccMol ),
if (SpOrder.cParty=0,comp(-1),SpOrder.cParty)
) ;
price := AveragePrice ;
summa := price * kolvo ;
if (kolvo <> 0)
{
OutFrm.Write(SklOrder.dord);
OutFrm.Write(SklOrder.norder);
GetFirst KatMC where ((SpOrder.cmc == KatMc.nrec));
OutFrm.Write(KatMc.name);
OutFrm.Write(KatMc.barkod);
OutFrm.Write(kolvo);
OutFrm.Write(price);
OutFrm.Write(summa);
summa_itogo := summa_itogo + summa;
}
}
}
DoneMCInfo ;
OutFrm.PUTEVENT(FEBREAK);
OutFrm.Write(summa_itogo);
-----------
Формируется такой отчет подозрительно быстрее стандартного, результат со стандартным не идет.
Пробовал фильтровать ордера по VidOrder - по приходу и по расходу - разница меньше, но все равно не сходится.
Может следует отталкиватся от другой таблицы, не SklOrder? Либо пользоваться другой функцией?
Пробую получить наличие по подразделению, равное стандартному. В своем интерфейсе определяю дату (datenal) и подразделение (_cpodr). Наличие получаю функцией NalT ( она возвращает результат в разрезе партий - то что мне надо):
InitMCInfo(datenal) ;
_loop SklOrder where ((0 == SklOrder.sp AND _cpodr == SklOrder.cpodr AND datenal >>= SklOrder.dord))
{
_loop SpOrder where ((SklOrder.nrec == SpOrder.CSKLORDER))
{
kolvo := NalT ( datenal,
SpOrder.cMC,
_cpodr,
if (SpOrder.ccMol =0,comp(-1),SpOrder.ccMol ),
if (SpOrder.cParty=0,comp(-1),SpOrder.cParty)
) ;
price := AveragePrice ;
summa := price * kolvo ;
if (kolvo <> 0)
{
OutFrm.Write(SklOrder.dord);
OutFrm.Write(SklOrder.norder);
GetFirst KatMC where ((SpOrder.cmc == KatMc.nrec));
OutFrm.Write(KatMc.name);
OutFrm.Write(KatMc.barkod);
OutFrm.Write(kolvo);
OutFrm.Write(price);
OutFrm.Write(summa);
summa_itogo := summa_itogo + summa;
}
}
}
DoneMCInfo ;
OutFrm.PUTEVENT(FEBREAK);
OutFrm.Write(summa_itogo);
-----------
Формируется такой отчет подозрительно быстрее стандартного, результат со стандартным не идет.
Пробовал фильтровать ордера по VidOrder - по приходу и по расходу - разница меньше, но все равно не сходится.
Может следует отталкиватся от другой таблицы, не SklOrder? Либо пользоваться другой функцией?