Программное создание ДО на основе накладной

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

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

Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Программное создание ДО на основе накладной

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

Так выкладывали бы сюда под тэгом Code :-)
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Программное создание ДО на основе накладной

Сообщение spark »

Алексей писал(а):Так выкладывали бы сюда под тэгом Code :-)
Да как-то постеснялся... но вот:

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


function rs_makeDO (NRec_: comp):comp;
{
  var type_: word
  var dSopr_: date
  result:=0
  if ( tmpMakeDO.GetFirst KatSopr where (( NRec_ == KatSopr.NRec )) <> tsOk )
   Exit;
  else
  {
   type_:=tmpMakeDO.KatSopr.vidsopr
   dSopr_:=tmpMakeDO.KatSopr.dsopr
  }
  if ( tmpMakeDO.GetFirst StepDoc where (( tmpMakeDO.KatSopr.cStepDoc == StepDoc.NRec )) = tsOk )
    if ( tmpMakeDO.GetFirst BaseDoc where (( tmpMakeDO.StepDoc.cBaseDoc  == BaseDoc.NRec )) = tsOk )
      {
       result:=tmpMakeDO.BaseDoc.NRec
       Exit;
      }

  var wDate     : word;
  var dDate     : date;
  var wParamEx  : word;
  var sNum      : string;
  var wTipMoney : word;
  var pVal      : comp;
  var noProtocol: word;
  var bdParam   : Batch_DateParam;

  sNum := tmpMakeDO.KatSopr.NSopr

  wParamEx  := 0FFFFh;
  dDate     := ZeroDate;
  wTipMoney := 0FFFFh;
  pVal      := -1;

  if ( not bdParam.Run(tmpMakeDO.KatSopr.nRec, tmpMakeDO.KatSopr.VidSopr, wDate, dDate, wParamEx, sNum, wTipMoney, pVal, noProtocol) )
    Exit;

  if (sNum <> '')
    {
      tmpMakeDO.ClearBuffer(tmpMakeDO.tnBaseDoc);

      case type_ of
        211:
          tmpMakeDO.BaseDoc.VidDoc := 201;
        111, 108:
          tmpMakeDO.BaseDoc.VidDoc := 101;
      else
              tmpMakeDO.BaseDoc.VidDoc := type_;
      end;

      tmpMakeDO.BaseDoc.NoDoc    := sNum;
      tmpMakeDO.BaseDoc.dDoc     := dDate;
      tmpMakeDO.BaseDoc.YearDoc  := Year(dDate);
      tmpMakeDO.BaseDoc.cOrg     := tmpMakeDO.KatSopr.cOrg;
      tmpMakeDO.BaseDoc.cOtvPodr := tmpMakeDO.KatSopr.cOtvPodr;

      var sError : string;

    }

  var pDO: GroupBatchGenereteDO;

  pDO.SetParameter('wDate_GroupBatchGenereteDO' , wDate);
  pDO.SetParameter('GetParamMakeDO_One_wParamEx', wParamEx);

  pDO.Set_typeSopr     (type_);
  pDO.Set_BegEndDate   (dSopr_, dSopr_);
  pDO.Set_UseFilter    (1);
  pDO.Set_NoGroupGP    (2 + 4 + 8);
  pDO.Set_dDate        (dDate);
  pDO.Set_wDate        (if(wDate <= 3, wDate, word(wDate + 2)));
  pDO.Set_MultiProtocol(noProtocol = 0);

  if ( sNum <> '' )
    pDO.Set_nNoDoc(sNum);

  delete Pick where ((22 == Pick.wList));

  insert Pick set Pick.wList := 22, Pick.cRec := NRec_;

  pDO.SetParameter('_FormBaseDocName_'             , word(7));
  pDO.SetParameter('wTipMoney_GroupBatchGenereteDO', wTipMoney);
  pDO.SetParameter('pVal_GroupBatchGenereteDO'     , pVal);

  pDO.GenerateDOs;

  pDO.SetParameter('_FormBaseDocName_'             , word(0));

  if ( tmpMakeDO.GetFirst KatSopr where (( NRec_ == KatSopr.NRec )) = tsOk )
   if ( tmpMakeDO.GetFirst StepDoc where (( tmpMakeDO.KatSopr.cStepDoc == StepDoc.NRec )) = tsOk )
    if ( tmpMakeDO.GetFirst BaseDoc where (( tmpMakeDO.StepDoc.cBaseDoc  == BaseDoc.NRec )) = tsOk )
    {
     result:=tmpMakeDO.BaseDoc.NRec
    }
}
Там может лишнее что-нибудь осталось от оригинальной процедуры, но в таком виде для моих целей подходит чуть более, чем полностью. =)
Ответить