Страница 1 из 1

Акты на списание и ДО

Добавлено: 20 дек 2011, 19:08
spark
Добрый день!

С недавнего времени бухгалтерия заметила, что в ДО на закупку при нажатии кнопки "Сопроводительные документы" в списке, который выскакивает(интерфейс L_BaseDoc::SeeNakl) отображаются не только приходные накладные к ДО, но и складские акты на списание, которые вроде по ссылкам, которые я знаю, никак не должны вязаться к ДО. Как такое может быть? куда можно глянуть, чтоб определить почему они подвязываются. Причем у одного из актов в этом интерфейсе светится не вся спецификация, а только первые две строки...

Re: Акты на списание и ДО

Добавлено: 21 дек 2011, 00:10
edward_K
Заполнение идет так

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

  _LOOP SpStep where (( p1 == SpStep.cStepDoc ))
    _LOOP SpSoprA where (( SpStep.nRec == SpSoprA.cSpStep ))
      case SpSoprA.VidSopr of
        102, 203:
         if ( GetFirst KatSoprA where (( SpSoprA.cSopr == KatSoprA.NRec )) = tsOk )
           if ( KatSoprA.cStepDoc = 0 )
             {
               if (GetFirst KatSoprMem where ((SpSoprA.cSopr == KatSoprMem.cRec)) <> tsOk)
                 {
                   ClearBuffer(#KatSoprMem);

                   KatSoprMem.cRec     := KatSoprA.NRec;
                   KatSoprMem.VidSopr  := KatSoprA.VidSopr;
                   KatSoprMem.dSopr    := KatSoprA.dSopr;
                   KatSoprMem.dOpr     := KatSoprA.dOpr;
                   KatSoprMem.NSopr    := KatSoprA.NSopr;
                   KatSoprMem.Descr    := KatSoprA.Descr;
                   KatSoprMem.cVal     := KatSoprA.cVal;
                   KatSoprMem.Status   := KatSoprA.Status;
                   KatSoprMem.cSchFact := KatSoprA.cSchFact;
                   KatSoprMem.cNote    := KatSoprA.cNote;
                   KatSoprMem.cOrgBase := KatSoprA.cOrgBase;
                   KatSoprMem.Summa    := KatSoprA.Summa;
                   KatSoprMem.SumVal   := KatSoprA.SumVal;
                   KatSoprMem.bRozn    := FALSE;
                   KatSoprMem.cStepDoc := KatSoprA.cStepDoc;

                   if ( Insert current KatSoprMem <> tsOk )
                     continue;
                 }

               if (GetFirst SpSoprMem where ((SpSoprA.NRec == SpSoprMem.cRec)) = tsOk)
                 Continue;

               ClearBuffer(#SpSoprMem);

               SpSoprMem.cSopr   := KatSoprMem.NRec;
               SpSoprMem.NPP     := SpSoprA.NPP;
               SpSoprMem.cRec    := SpSoprA.NRec;
               SpSoprMem.prMC    := if (SpSoprA.prMC <> 0, SpSoprA.prMC, 1);
               SpSoprMem.KolFact := SpSoprA.KolFact;
               SpSoprMem.cMCUSL  := SpSoprA.cMCUSL;
               SpSoprMem.cPArty  := SpSoprA.cParty;
               SpSoprMem.cOtpEd  := if (SpSoprA.prMC <= 2, SpSoprA.cOtpEd, 0);
               SpSoprMem.Price   := SpSoprA.Price;
               SpSoprMem.rPrice  := SpSoprA.rPrice;
               SpSoprMem.VPrice  := SpSoprA.VPrice;
               SpSoprMem.rVPrice := SpSoprA.rVPrice;

               if ( Insert current  SpSoprMem <> tsOk ){}
             }
      end;

Re: Акты на списание и ДО

Добавлено: 21 дек 2011, 13:36
spark
edward_K писал(а):Заполнение идет так

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

  _LOOP SpStep where (( p1 == SpStep.cStepDoc ))
    _LOOP SpSoprA where (( SpStep.nRec == SpSoprA.cSpStep ))
      case SpSoprA.VidSopr of
        102, 203:
         if ( GetFirst KatSoprA where (( SpSoprA.cSopr == KatSoprA.NRec )) = tsOk )
           if ( KatSoprA.cStepDoc = 0 )
             {
               if (GetFirst KatSoprMem where ((SpSoprA.cSopr == KatSoprMem.cRec)) <> tsOk)
                 {
                   ClearBuffer(#KatSoprMem);

                   KatSoprMem.cRec     := KatSoprA.NRec;
                   KatSoprMem.VidSopr  := KatSoprA.VidSopr;
                   KatSoprMem.dSopr    := KatSoprA.dSopr;
                   KatSoprMem.dOpr     := KatSoprA.dOpr;
                   KatSoprMem.NSopr    := KatSoprA.NSopr;
                   KatSoprMem.Descr    := KatSoprA.Descr;
                   KatSoprMem.cVal     := KatSoprA.cVal;
                   KatSoprMem.Status   := KatSoprA.Status;
                   KatSoprMem.cSchFact := KatSoprA.cSchFact;
                   KatSoprMem.cNote    := KatSoprA.cNote;
                   KatSoprMem.cOrgBase := KatSoprA.cOrgBase;
                   KatSoprMem.Summa    := KatSoprA.Summa;
                   KatSoprMem.SumVal   := KatSoprA.SumVal;
                   KatSoprMem.bRozn    := FALSE;
                   KatSoprMem.cStepDoc := KatSoprA.cStepDoc;

                   if ( Insert current KatSoprMem <> tsOk )
                     continue;
                 }

               if (GetFirst SpSoprMem where ((SpSoprA.NRec == SpSoprMem.cRec)) = tsOk)
                 Continue;

               ClearBuffer(#SpSoprMem);

               SpSoprMem.cSopr   := KatSoprMem.NRec;
               SpSoprMem.NPP     := SpSoprA.NPP;
               SpSoprMem.cRec    := SpSoprA.NRec;
               SpSoprMem.prMC    := if (SpSoprA.prMC <> 0, SpSoprA.prMC, 1);
               SpSoprMem.KolFact := SpSoprA.KolFact;
               SpSoprMem.cMCUSL  := SpSoprA.cMCUSL;
               SpSoprMem.cPArty  := SpSoprA.cParty;
               SpSoprMem.cOtpEd  := if (SpSoprA.prMC <= 2, SpSoprA.cOtpEd, 0);
               SpSoprMem.Price   := SpSoprA.Price;
               SpSoprMem.rPrice  := SpSoprA.rPrice;
               SpSoprMem.VPrice  := SpSoprA.VPrice;
               SpSoprMem.rVPrice := SpSoprA.rVPrice;

               if ( Insert current  SpSoprMem <> tsOk ){}
             }
      end;
Спасибо! Попробую вручную пробежаться по коду. Как раз и хотел посмотреть как собирается эта katsoprmem.

Re: Акты на списание и ДО

Добавлено: 27 дек 2011, 12:23
spark
edward_K писал(а):Заполнение идет так

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

  _LOOP SpStep where (( p1 == SpStep.cStepDoc ))
    _LOOP SpSoprA where (( SpStep.nRec == SpSoprA.cSpStep ))
      case SpSoprA.VidSopr of
        102, 203:
         if ( GetFirst KatSoprA where (( SpSoprA.cSopr == KatSoprA.NRec )) = tsOk )
           if ( KatSoprA.cStepDoc = 0 )
             {
               if (GetFirst KatSoprMem where ((SpSoprA.cSopr == KatSoprMem.cRec)) <> tsOk)
                 {
                   ClearBuffer(#KatSoprMem);

                   KatSoprMem.cRec     := KatSoprA.NRec;
                   KatSoprMem.VidSopr  := KatSoprA.VidSopr;
                   KatSoprMem.dSopr    := KatSoprA.dSopr;
                   KatSoprMem.dOpr     := KatSoprA.dOpr;
                   KatSoprMem.NSopr    := KatSoprA.NSopr;
                   KatSoprMem.Descr    := KatSoprA.Descr;
                   KatSoprMem.cVal     := KatSoprA.cVal;
                   KatSoprMem.Status   := KatSoprA.Status;
                   KatSoprMem.cSchFact := KatSoprA.cSchFact;
                   KatSoprMem.cNote    := KatSoprA.cNote;
                   KatSoprMem.cOrgBase := KatSoprA.cOrgBase;
                   KatSoprMem.Summa    := KatSoprA.Summa;
                   KatSoprMem.SumVal   := KatSoprA.SumVal;
                   KatSoprMem.bRozn    := FALSE;
                   KatSoprMem.cStepDoc := KatSoprA.cStepDoc;

                   if ( Insert current KatSoprMem <> tsOk )
                     continue;
                 }

               if (GetFirst SpSoprMem where ((SpSoprA.NRec == SpSoprMem.cRec)) = tsOk)
                 Continue;

               ClearBuffer(#SpSoprMem);

               SpSoprMem.cSopr   := KatSoprMem.NRec;
               SpSoprMem.NPP     := SpSoprA.NPP;
               SpSoprMem.cRec    := SpSoprA.NRec;
               SpSoprMem.prMC    := if (SpSoprA.prMC <> 0, SpSoprA.prMC, 1);
               SpSoprMem.KolFact := SpSoprA.KolFact;
               SpSoprMem.cMCUSL  := SpSoprA.cMCUSL;
               SpSoprMem.cPArty  := SpSoprA.cParty;
               SpSoprMem.cOtpEd  := if (SpSoprA.prMC <= 2, SpSoprA.cOtpEd, 0);
               SpSoprMem.Price   := SpSoprA.Price;
               SpSoprMem.rPrice  := SpSoprA.rPrice;
               SpSoprMem.VPrice  := SpSoprA.VPrice;
               SpSoprMem.rVPrice := SpSoprA.rVPrice;

               if ( Insert current  SpSoprMem <> tsOk ){}
             }
      end;
а SPSOPRA это что, временная таблица? А как она заполняется? Что-то по этому коду не получается проследить как получается такая ерунда... =(

Re: Акты на списание и ДО

Добавлено: 27 дек 2011, 13:42
edward_K
там все синонимы. Раз нет в словаре значит либо времянка, либо синоним. Эта к spsopr