Подскажите, пожалуйста,почему у меня неправильно заполняется временная таблица.
Задача в том, чтобы номер договора брать из ДО, если его нет то из связанного документа, для корректирующей СФ брать из основной.
Запрос вот такого вида:
Код: Выделить всё
select * from
pick,schfact(readonly), stepdoc(readonly), basedoc(readonly),dogovor(readonly),synonym dogovor dogovor3,synonym dogovor dogovor2(readonly),
synonym schfact schfact_osn,synonym stepdoc stepdoc_osn,synonym basedoc basedoc_osn,synonym dogovor dogovor_osn
where ((
6==pick.wlist
and pick.crec==schfact.corg
and date1<<=schfact.dfact
and date2>>=schfact.dfact
and schfact.CRECS[7] == schfact_osn.nrec
and schfact.cstepdoc==stepdoc.nrec
and stepdoc.cbasedoc==basedoc.nrec
and basedoc.cdogovor==dogovor.nrec
and schfact_osn.cstepdoc==stepdoc_osn.nrec
and stepdoc_osn.cbasedoc==basedoc_osn.nrec
and basedoc_osn.cdogovor==dogovor_osn.nrec
and schfact.csoprhoz==soprhoz.nrec
and soprhoz.csoprdoc ==katsopr.nrec
and soprhoz.cdogovor==dogovor3.nrec
));
Код: Выделить всё
_loop pick
{ _loop schfact
{ m:=false;
if (schfact.direct=1)
{ _loop stepdoc
{ m:=true; //контроль привязки ДО
_loop basedoc
{_loop dogovor
{ if (schfact.tipuser<>7240) then
{Ins_TmpTab(dogovor.nrec, schfact.nrec, schfact.summa);
nextvisual;}
else
{Ins_TmpTab(dogovor_osn.nrec, schfact.nrec, schfact.summa);
nextvisual;}
}
} //basedoc
} //stepdoc
if m<>true then // Если ДО не привязано, будем искать номер договора в сопроводительных документах
{ if (schfact.tipuser<>7240) then
{ Ins_TmpTab(dogovor3.nrec, schfact.nrec, schfact.summa);nextvisual;
Message('счет-фактура ' + schfact.num + ' номер договора '+ dogovor3.nodoc);
}
else
{Ins_TmpTab(dogovor_osn.nrec, schfact.nrec, schfact.summa);nextvisual;
}
}
}
} //schfact
} //pick
и вот почему-то dogovor3.nodoc не всегда корректно определяется.. в зависимости от введенных интервалов дат.. Иногда туда попадают значения, хотя просто запрос в суппорте показывает, что там номера договоров нулевые(нет привязок вообще)..
Подскажите, пожалуйста, что я неправильно делаю?:)