Страница 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);//добавление остатков ЦУ
          }