Задача - получит развернутое сальдо по счет\субсет КАУ1, КАУ2 на любую дату ..
Вопрос 1. Какое сальдо возвращает Calc_NewSaldo (расчетное или ближайшее)?
Вопрос 2. Можно ли Calc_NewSaldo получить сальдо на произвольную дату?
Вопрос 3. Правильно ли использую?
Код: Выделить всё
if (GetFirst BuhSchet where ((_nRec == BuhSchet.nrec)) = tsOk)
{
Код: Выделить всё
//1
delete all SaldoNM;//очищаем таблицу сальдо
//2
var
iSaldoActuality: SaldoActuality;
iSaldoActuality.DropActualityForPlansSch(0); // сброс актуальности сальдо для всех планов счетов
Код: Выделить всё
//3 ближайшее на дату формирования отчета
_pdStr := if((getlast saldmoun WHERE ((BuhSchet.SCHET == saldmoun.scheto
AND BuhSchet.SUBSch == saldmoun.subossch))
and _CPLANSSCHWork = saldmoun.cplanssch
and saldmoun.datesal <= _pdStr) = tsOK,
saldmoun.datesal, date(1, month(_pdStr), year(_pdStr)));
_pdEnd := Sub_Day (_dEnd, 1);
Код: Выделить всё
Calc_NewSaldo(word(0),
_CPLANSSCHWork, //план счетов
coSaldoNM, //таблица
BuhSchet.SCHET, BuhSchet.SUBSch, //счет, субчет
Comp(0), //подразделение
Comp(0), Comp(0), Comp(0),
Comp(0), Comp(0), Comp(0),
_pdStr, _pdEnd// дата с - по
);
rereadrecord(#saldonm);//обязательно
Код: Выделить всё
_LOOP SaldoNM
{
if(getfirst tmSaldoM where ((SaldoNM.SchetO == tmSaldoM.sSchet and SaldoNM.SubOsSch == tmSaldoM.sSubSch
and SaldoNM.KauOS[1] == tmSaldoM.cKatOrg and SaldoNM.KauOS[2] == tmSaldoM.cBaseDoc)) <> tsOK)
{
ClearBuffer(#tmSaldoM);
set tmSaldoM.sSchet := SaldoNM.SchetO;
set tmSaldoM.sSubSch := SaldoNM.SubOsSch;
set tmSaldoM.cKatOrg := SaldoNM.KauOS[1];
set tmSaldoM.cBaseDoc := SaldoNM.KauOS[2];
set tmSaldoM.SumOb := round(if(SaldoNM.VIOB = 1, SaldoNM.SumS, (-1 * SaldoNM.SumS)), 2);
insert current tmSaldoM;
}
else
{
set tmSaldoM.SumOb := tmSaldoM.SumOb + round(if(SaldoNM.VIOB = 1, SaldoNM.SumS, (-1 * SaldoNM.SumS)), 2);
update current tmSaldoM;
}
}//_LOOP SaldoNM