Страница 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