Добрый день!
С недавнего времени бухгалтерия заметила, что в ДО на закупку при нажатии кнопки "Сопроводительные документы" в списке, который выскакивает(интерфейс L_BaseDoc::SeeNakl) отображаются не только приходные накладные к ДО, но и складские акты на списание, которые вроде по ссылкам, которые я знаю, никак не должны вязаться к ДО. Как такое может быть? куда можно глянуть, чтоб определить почему они подвязываются. Причем у одного из актов в этом интерфейсе светится не вся спецификация, а только первые две строки...
			
			
									
						
										
						Акты на списание и ДО
Модераторы: m0p3e, edward_K, Модераторы
- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: Акты на списание и ДО
Заполнение идет так
			
			
									
						
										
						Код: Выделить всё
  _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: Акты на списание и ДО
Спасибо! Попробую вручную пробежаться по коду. Как раз и хотел посмотреть как собирается эта katsoprmem.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: Акты на списание и ДО
а SPSOPRA это что, временная таблица? А как она заполняется? Что-то по этому коду не получается проследить как получается такая ерунда... =(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;
- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: Акты на списание и ДО
там все синонимы. Раз нет в словаре значит либо времянка, либо синоним. Эта к spsopr