Страница 1 из 1
Целевой учет. Изменение ордера, пересчет остатков.
Добавлено: 06 мар 2017, 18:17
Masygreen
(задача есть ордера, надо программно проставить ЦУ...)
Подскажите как правильно программно изменить ЦУ ордера.
Пытаюсь:
Код: Выделить всё
set SPECMTR.COBJ := 25;
set SPECMTR.ckau[1] := 100;
update current SPECMTR;
oMtrCount.MtrCheckDocs(coSpOrder, SpOrder.nRec, SpOrder.VidOrder, true);
Не работает, то ли инициализация не та .. то ли еще чего .. после пересчета остатков в ЦУ все работает, но хочется до ..
Re: Целевой учет. Изменение ордера, пересчет остатков.
Добавлено: 07 мар 2017, 06:26
Алексей
Давно делал загрузку по УКСу, нашел кусок кода вот такой:
Код: Выделить всё
#include MTRFuncs.vih
#include modifOrd.vih
...........................
ispord.AnySpOrder_insert(sporder.buffer); // для вставки AnySpOrder_update
iMtrFunc.GenSpecMTRForUKS(1112,sporder.nrec,sporder.cobj,getSZt(mc.vidr));
ispord.AnySpOrder_update(sporder.buffer); // для апдейта AnySpOrder_update
OrdHoz.UpdateSoprHoz(sklorder.nrec, sklorder.csopr, 0, katsopr.summa,0, katsopr.dopr);
посмотрите методы этих объектов.
Re: Целевой учет. Изменение ордера, пересчет остатков.
Добавлено: 09 мар 2017, 15:52
Masygreen
Правда найдена при помощи ТП, фишка в обновлении и вставке через буфер
Код: Выделить всё
#include MTRFuncs.vih
#include MTRFuncs.var // oMTRFun
Код: Выделить всё
if(getfirst SPORDER where ((spsopr.nrec == SPORDER.CSPSOPR)) = tsOK)
if(getfirst SPECMTR where ((SPORDER.nrec == SPECMTR.CSPEC and coSPORDER == SPECMTR.COTABLE)) <> tsOK)
{//вставка ЦУ
ClearBuffer(#SPECMTR);
set SPECMTR.COTABLE := coSPORDER;
set SPECMTR.CSPEC := SPORDER.nrec;
set SPECMTR.CSALDTUNE := _cSALDTUNE;
set SPECMTR.COBJ := _cSpKau01;
set SPECMTR.ckau[1] := _cSpKau02;
oMTRFun.InsUpdRec(SpecMTR.buffer);//добавление остатков ЦУ
}
else
{//изменение ЦУ
bSpecMtr := SpecMTR.buffer;
set bSpecMtr.CSALDTUNE := _cSALDTUNE;
set bSpecMtr.COBJ := _cSpKau01;
set bSpecMtr.ckau[1] := _cSpKau02;
oMTRFun.InsUpdRec(bSpecMtr);//добавление остатков ЦУ
}