Прогноз процентов по счёту на дату, большую или равную текущей.
Сохранить в файлеОбсудить в форуме
Описание
Данный макрос выводит сумму процентов, которая накопиться по счёту на определённую дату. В основе алгоритма лежит проведение по счёту операции "закрытие счёта по основным условиям" в транзакции и откат транзакции. Пример разрабатывался для сборки 5.1.93.
Текст примера
import DeposInter, CommonInter, "vars.mac"; file deps ("depositr.dbt") key 8 write; file pccalc ("pc__calc.dbt") write; file dep_ ("depositr.dbt") key 8; var stat, stat1, stat2, Ref; macro prognos (Dat, Res) /*входные параметры Ref - референс счёта Dat - дата прогноза*/ /*выходные параметры Res - результирующая сумма прогноза процентов*/ record parm_ ("oper_prm.1"); record doc_ ("sbdepdoc.dbt"); deps.Referenc = Ref; stat = getEQ(deps); Res = 0; if (stat) ClearRecord (parm_); ClearRecord (doc_); parm_.Account = deps.Account; parm_.Type_Account = deps.Type_Account; parm_.Code_Currency = deps.Code_Currency; parm_.Type_Oper = 10; parm_.Show_Panel = 0; parm_.UseMaxDate = 1; parm_.NoPrint = 1; parm_.TypeComplexOper = 10; doc_.Referenc = deps.Referenc; doc_.IsCur = deps.IsCur; doc_.FNCash = deps.FNCash; doc_.Account = deps.Account; doc_.Type_Account = deps.Type_Account; doc_.CodClient = deps.CodClient; doc_.Date_Document = {curdate}; doc_.DepDate_Document = Dat; doc_.TypeOper = parm_.Type_Oper; doc_.TypeComplexOper = parm_.TypeComplexOper; doc_.Flags = 512; stat = Выполнение_Операции(parm_,doc_); if (NOT stat) pccalc.Referenc = Ref; pccalc.ObjectType = 2001; pccalc.TypeRecord = 1; pccalc.EndDate = Date (31,12,2099); stat1 = GetLE(pccalc); if (stat1) Res = Res + pccalc.SumForPay; [Res: #############](Res); [pccalc.SumCalc: #############](pccalc.SumCalc); [pccalc.SumPay: #############](pccalc.SumPay); [pccalc.SumForPay: #############](pccalc.SumForPay); end; else [Error: #############](stat); end; end; end; macro TrnProc() var Dat = Date(20, 01, 2004); var Res = 0; prognos(Dat, Res); AbortTrn(); end; OpenDepFiles(); dep_.Referenc = 0; /*здесь можно задать конкретный референс, если не хотим запускать по всем счетам*/ stat2 = GetGE (dep_); while (stat2) Ref = dep_.Referenc; ProcessConTrn(1,"TrnProc", deps); stat2 = next (dep_); /*соответственно next делать не нужно, если нужна информация по одному счёту*/ end; CloseDepFiles();