Форма 0409118
На страницу Пред. 1, 2, 3
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Anna80 Участник со стажем
Вступление в Клуб: 09.02.2010
|
Ср Дек 22, 2010 11:48   |
|
Полезность: Нет оценки
|
timochev, молодец! За заплатку спасибо, передам своим айтишникам, может чего придумают) |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Чт Дек 23, 2010 15:45   |
|
Полезность: Нет оценки
|
timochev пишет: | Анна, спасибо!
Заработало! Завтра еще на тестовых ситуациях посчитаю.
Резерв действительно надо вычитать и из рублей, и из валюты. Просто наш специалист хотел мне жизнь облегчить и сократил формулу...
Умножение на всякие коэффициенты тоже заработало.
Насчет минимальных остатков - сделал заплатку в дистрибутивную I_110_DATA.SLIB. В процедуре Calc_af_org вставил между вычислением остатка по счету и расчетом суммы резерва обращение к справочнику "ОП. Показатели", в котором отчетник будет вести минимальные остатки. В принципе можно этот кусок кода распространить и на Calc_af_bank_f, и на Calc_af_bank_n - необходимость этого зависит от категории, с которой настроены маски счетов.
Код: | v := abs(f.a('В'||t.[ARC_MOVE]||'СН', tdate));
-- 21.12.10 КОБ Тимошевский Д.С. BS00157025
if y.MAIN_V_ID like '30110%' or y.MAIN_V_ID like '30114%' then
var xcode ::[REPS_MEASURES].CODE%type;
begin
xcode := ::[REPS_MEASURES]([NAME] = 'MIN_SALDO_'||y.MAIN_V_ID).CODE;
exception when No_Data_Found then xcode := null;
end;
if xcode is not null then
v := ::[REPS_MEASURES].[SLIB].GET_VALUE(xcode,tdate,null,null,null,false,false,false) * ::[DOCUMENT].[LIB_CUR].Get_Rate(t.ac.[FINTOOL],tdate);
else
v := 0;
end if;
end if;
-- end 21.12.10 КОБ Тимошевский Д.С.
-- считаем сформированый резерв если доп категория указана
if instr(ID_For_Rezerv_calc, '#'||cast_to([string], y.EXT)||'#') > 0 then
|
В справочнике "ОП. Показатели" записи завожу таким образом:
Код: произвольный, но уникальный
Наименование: MIN_SALDO_<номер счета>
К сожалению, код в этом справочнике всего 10 символов, поэтому не получается затолкать в него номер лицевого счета. Пришлось делать дополнительный запрос по наименованию.
А так все работает! |
Чуток поправил дату определения курса (минус 1 день) при пересчете неснижаемого остатка. Курс беру на предыдущую дату, т.к. отчет формируется НА дату. Надо так:
Код: | ::[DOCUMENT].[LIB_CUR].Get_Rate(t.ac.[FINTOOL],tdate - 1) |
|
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пт Янв 14, 2011 18:57   |
|
Полезность: Нет оценки
|
Нашел ошибку в заплатке по минимальным остаткам. Calc_af_org используется не только при расчете КРЗ, но и в других кодах. Поэтому описанная выше модификация кода повлекла к искажению остатков по 30110 и 30114 в других показателях.
Поправил так:
Код: | var prz_min_saldo ref [ACC_PATTERN];
begin
locate prz_min_saldo in y.C_ANALYTIC.[ACC_PATTERN]
where prz_min_saldo.[PRODUCT] = ::[ANALYTIC_CODE].[L].ch_r('KOB_MIN_SALDO','КОБ. Минимальный остаток')
and prz_min_saldo.[OR_DOWN];
exception when others then
prz_min_saldo := null;
end;
if prz_min_saldo is not null and y.MAIN_V_ID like '30110%' or y.MAIN_V_ID like '30114%' then
var xcode ::[REPS_MEASURES].CODE%type;
begin
xcode := ::[REPS_MEASURES]([NAME] = 'MIN_SALDO_'||y.MAIN_V_ID).CODE;
exception when No_Data_Found then xcode := null;
end;
if xcode is not null then
v := ::[REPS_MEASURES].[SLIB].GET_VALUE(xcode,tdate,null,null,null,false,false,false) * ::[DOCUMENT].[LIB_CUR].Get_Rate(t.ac.[FINTOOL],tdate - 1);
else
v := 0;
end if;
end if;
|
Теперь в настройки аналитических признаков можно прописывать категорию с кодом KOB_MIN_SALDO, что является признаком необходимости вычисления минимальных остатков вместо реальных.
Соответственно, данную категорию надо добавить в КРЗ (шаблон любой).
Дальше можно доработать, чтобы у категории анализировался шаблон - маски счетов, по которым необходимо брать мин.остатки. Тогда явный анализ масок счетов из кода пропадет. Будет красивее. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|