валютный и сомовый балансы за архивный день
0 (0)
валютный и сомовый балансы за архивный день ( Мирбек 14.09.2006 13:36 )
5(1)народ, здравствуй?
задача передо мной следующая была:
Рассчитать объязательные резервы (ОРТ) за неделю и внедрить этот макрос в меню пользователя.
По старой схеме все это делалось с помощью макросов на VBA Excell т.е. в RSBank е каждый день выгружают dbf файлы и с этих файлов в пятницу вечером получают ОРТ.
короче смотрю как формируется DBF файлы и вижу что они получаются из сомового(национальная валютя Кыргызской Республики) и валютного баланса.
Шеф хочет чтобы каждый день не выгружать и это все происходило в самой RSBank е.
Я написал макрос который считает ОРТ. Этот макрос как бы считает но только делает только за текущий день (остальные заполняются эти днем)хотя я постарался делать за 5 рабочих дней.
в документации написано что за архивный день отвечают пункт структуры bl_info.rec BdRepdate
все это стоит вроде.
Что делать помогите???
также никак не удается запустить РассчитатьБалансПоГлавеВал(bl_info) без процедуры ПанельОтчет(bl_info).Все приходится делать нажмимая клавишу F2
пока это все вручную делается???
>> ОтветитьВот так это делается ( Izmajlov 18.09.2006 12:14 )
5(1)import Баланс; file Bal (blrep); record rc("bl_info.rec"); file curd(curdate); next(curd); CurDate=curd.CurDate; PrevDate=curd.PrevDate; RepDate=curd.PrevDate; /* Рассчитать в рублях за прошлый жень*/ IA=IP=D=K=OA=OP=0; rc.iChapter = 1; rc.iKind = 7; rc.iUnit = 1; rc.iCurrency = 1; rc.bdRepDate = RepDate; BalName=РассчитатьБалансПоГлаве(rc); open(Bal,BalName); while (next (Bal)) /* перебор балансовых счетов */ if (rc.iUnit==1) InActive = Bal.dmInActive; InPassive = Bal.dmInPassive; Debet = Bal.dmDebet; Kredit = Bal.dmCredit; OutActive = Bal.dmOutActive; OutPassive = Bal.dmOutPassive; IA =IA+Bal.dmInActive; IP =IP+Bal.dmInPassive; D =D +Bal.dmDebet; K =K +Bal.dmCredit; OA =OA+Bal.dmOutActive; OP =OP+Bal.dmOutPassive; else InActive = double(Bal.lmInActiveThR); /*изменено IA =IA+double(Bal.dmInActiveThR);*/ InPassive = double(Bal.lmInPassiveThR); Debet = double(Bal.lmDebetThR); Kredit = double(Bal.lmCreditThR); OutActive = double(Bal.lmOutActiveThR); OutPassive = double(Bal.lmOutPassiveThR); IA =IA+double(Bal.lmInActiveThR); /*изменено IA =IA+double(Bal.dmInActiveThR);*/ IP =IP+double(Bal.lmInPassiveThR); D =D +double(Bal.lmDebetThR); K =K +double(Bal.lmCreditThR); OA =OA+double(Bal.lmOutActiveThR); OP =OP+double(Bal.lmOutPassiveThR); end; end;
Структура bl_info (скопировал из RSL_Proc)
iChapter – номер главы счетов, по которой необходимо выполнить расчет баланса; по
умолчанию значение равно 0 и расчет выполняется по всем главам.
iKind – период выпуска баланса. Данный параметр может принимать следующие значения:
1 – День,
2 – Месяц,
3 – Квартал,
4 – Год,
5 – Накопительный,
6 – Годовой заключительный,
7 – День в прошлом,
8 – Период.
По умолчанию значение параметра равно 0 и баланс выпускается за текущий
операционный день.
iUnit – размерность сумм баланса, по умолчанию ее значение равно 2. Данный параметр
может принимать следующие значения:
1 – В рублях и копейках,
2 – В тысячах.
iCurrency – параметр определяет учет счетов покрытия, по умолчанию его значение равно
1. Параметр может принимать следующие значения:
1 – Все счета,
2 – Только счета рублевого покрытия,
3 – Без счетов рублевого покрытия.
iRecalcCurrency – код валюты для пересчета, по умолчанию его значение равно 0. Данный
параметр может принимать значение любого кода валюты, которая есть в
справочнике валют.
iMonth – номер месяца, за который выпускается баланс. Данный параметр используется в
случае формирования баланса за месяц.
iQuarter – номер квартала, за который выпускается баланс. Данный параметр используется
в случае формирования баланса за квартал.
bdRepDate – дата, за которую выпускается баланс. Данный параметр используется в случае
формирования баланса за архивный день.
bdBeginDate – дата начала периода формирования баланса. Данный параметр используется
в случае формирования баланса за период.
bdEndDate – дата окончания периода формирования баланса. Данный параметр
используется в случае формирования баланса за период.
iFirstMonth – номер первого месяца баланса.
iLastMonth – номер последнего месяца баланса.
iRestMonth – номер месяца исходящего остатка.
iOutYear – номер года исходящего остатка.
IPlanNumber1 – номер плана балансовых счетов главы 1.
IPlanNumber2 – номер плана балансовых счетов главы 2.
IPlanNumber3 – номер плана балансовых счетов главы 3.
IPlanNumber4 – номер плана балансовых счетов главы 4.
IPlanNumber5 – номер плана балансовых счетов главы 5.
NumDprt – номер филиала, по счетам которого выполняется расчет баланса.
Oper – номер операциониста, по счетам которого рассчитывается баланс.
Client – код клиента, по счетам которого выпускается баланс.
Balance – номер балансового счета для лицевых счетов, относящихся к которому,
выполняется расчет баланса.
Type_Account – системный тип лицевых счетов, для которых следует рассчитать баланс.
UserTypeAccount – пользовательский тип лицевых счетов, для которых рассчитывается
баланс.
IAlgorithm – номер алгоритма расчета баланса для валютных счетов.
iReportNumber – номер отчета. Данный параметр может принимать следующие значения:
1 – Рублевый баланс;
2 – Валютный баланс;
3 – Рублевая оборотно-сальдовая ведомость;
4 – Валютная оборотно-сальдовая ведомость;
5 – Рублевая оборотно-сальдовая ведомость, полученная с использованием процедур
макроязыка RSL;
6 – Рублевая сальдовая ведомость, полученная с использованием процедур макроязыка
RSL.
iOutForm – номер формы выпуска баланса (обороты/остатки). Возможные значения
данного параметра хранятся в файле namealg.dbt.
iGroup – вид группировки (итоги). Возможные значения данного параметра хранятся в
файле namealg.dbt.
Code_Currency – цифровой ISO-код валюты для расчета баланса по валютным счетам.
CRpnZero – признак печати нулевых сумм:
• Y – строки с нулевыми суммами будут представлены в отчете,
• N – строки с нулевыми суммами будут исключены из отчета.
cSetA – признак печати с апострофами:
• Y – все суммы в отчете будут разделены по разрядам апострофами,
• N – суммы в отчете не разделяются по разрядам.
Независимо от вида выпускаемого баланса в данной структуре обязательно должны быть
определены значения полей iChapter, iKind, iUnit, iCurrency.
С уважением,
Измайлов Ф.В.
>> Ответитьеще валютный баланс ( Мирбек 18.09.2006 13:20 )
5(1)Спасибо за ответ!!!
как я понял это у Вас баланс на нацинальной валюте за текущий день.
Мне надо еще валютный баланс(в долларах, евро) и еще за все это делать 5 дней в одном макросе
посоветуйте пожалуйста чтоб одним нажатием кнопки пользователю выводился готовый отчет на Excel е (Объязательные Резервы за неделю) надо еще учитывать праздничные дни
Заранее спасибо.
>> Ответитьи еще один вопрос: этот пример для какой версии RS Bank написан ( Мирбек 18.09.2006 13:34 )
5(1)этот пример для какой версии RS Bank написан
>> ОтветитьНда.. тут надо постараться :))) ( Izmajlov 18.09.2006 15:10 )
5(1)Это как в притче - или накормить ухой, или дать удочку, что бы наловил рыбы. Я предпочту второе, обозначу приемы, а Вы потренируйтесь их применить. Так будет надежнее. Отвечаю по порядку.
1. Макрос для любой версии, 086, 090...
2. Что бы рассчитать не по национальной валюте а по долларам или евро то, надо, цитирую "iRecalcCurrency – код валюты для пересчета, по умолчанию его значение равно 0. Данный параметр может принимать значение любого кода валюты, которая есть в справочнике валют."
3. Если нужен за пять дней , то вариантов два. Если за каждый день периода - прокручиваем пять раз .. если за период, то iKind – период выпуска баланса. Данный параметр устанавливаем - 8 период
4. Как выводить в Excel -
import Баланс, lgxs; File acc (account); File blr (blrep); Record inf ("bl_info.rec"); /* Надо заполнить структуру, см. пред.сообщение */ v=РассчитатьБалансПоГлаве(inf); ob=TlgActiveX("Excel.Application",True); ob.Visible=True; ob.WorkBooks.Add(); Row=2; Open(blr,v); While(next(blr)) ob.Range("A"+String(Row)).Value=blr.Balance; if ((blr.dmInActive!=0) or (blr.dmOutActive!=0)) ob.Range("B"+String(Row)).Value=Double(blr.dmInActive_R )/100; ob.Range("C"+String(Row)).Value=Double(blr.dmInActive_V )/100; ob.Range("D"+String(Row)).Value=Double(blr.dmInActive )/100; ob.Range("K"+String(Row)).Value=Double(blr.dmOutActive_R)/100; ob.Range("L"+String(Row)).Value=Double(blr.dmOutActive_V)/100; ob.Range("M"+String(Row)).Value=Double(blr.dmOutActive )/100; else ob.Range("B"+String(Row)).Value=Double(blr.dmInPassive_R )/100; ob.Range("C"+String(Row)).Value=Double(blr.dmInPassive_V )/100; ob.Range("D"+String(Row)).Value=Double(blr.dmInPassive )/100; ob.Range("K"+String(Row)).Value=Double(blr.dmOutPassive_R)/100; ob.Range("L"+String(Row)).Value=Double(blr.dmOutPassive_V)/100; ob.Range("M"+String(Row)).Value=Double(blr.dmOutPassive )/100; end; ob.Range("E"+String(Row)).Value=Double(blr.dmDebet_R )/100; ob.Range("F"+String(Row)).Value=Double(blr.dmDebet_V )/100; ob.Range("G"+String(Row)).Value=Double(blr.dmDebet )/100; ob.Range("H"+String(Row)).Value=Double(blr.dmCredit_R)/100; ob.Range("I"+String(Row)).Value=Double(blr.dmCredit_V)/100; ob.Range("J"+String(Row)).Value=Double(blr.dmCredit )/100; Row=Row+1; end;
5. Как учитывать праздничные дни. В РСбанке, в системном сервисе есть Опция - Календарь, там надо внимательно просмотреть на предмет правильности выходных и праздников.
import Календарь; Date1 = date(1); Date2 = date(10); While(Date1<=Date2) if(isWorkDay(Date1)==1) /* Обрабатываем рабочий день */ end; Date1 = Date1 + 1; end; Описание функции IsWorkday (Date:V_Date):V_Integer Данная процедура определяет, является ли указанный день рабочим или нет. Параметры: Date − дата. По умолчанию – текущий день. Возвращаемое значение: Процедура возвращает значение: ♦ 1 − если день рабочий; ♦ 0 − если выходной; ♦ –1 − при возникновении ошибки.
Успехов, Измайлов Ф.В.
>> Ответить