Целевой учет. Изменение ордера, пересчет остатков.

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Целевой учет. Изменение ордера, пересчет остатков.

Сообщение Masygreen »

(задача есть ордера, надо программно проставить ЦУ...)
Подскажите как правильно программно изменить ЦУ ордера.
Пытаюсь:

Код: Выделить всё


           set SPECMTR.COBJ := 25;
            set SPECMTR.ckau[1] := 100;
            update current SPECMTR;
            oMtrCount.MtrCheckDocs(coSpOrder, SpOrder.nRec, SpOrder.VidOrder, true);
Не работает, то ли инициализация не та .. то ли еще чего .. после пересчета остатков в ЦУ все работает, но хочется до ..
Время ведет!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Целевой учет. Изменение ордера, пересчет остатков.

Сообщение Алексей »

Давно делал загрузку по УКСу, нашел кусок кода вот такой:

Код: Выделить всё

#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);
посмотрите методы этих объектов.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Целевой учет. Изменение ордера, пересчет остатков.

Сообщение 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);//добавление остатков ЦУ
          }
Время ведет!
Ответить