У Вас какая-то путаница с этими сокращениями.
Начнем с начала. Есть база, с которой производится вычисление. Для алиментов это все начисления минус налоги. Вы называете ее почему-то сокращенной, а по-моему это просто база. Она приходит на вход RUAD. Сама RUAD базу не вычисляет.
Далее, нужно посчитать алименты. Допустим у нас есть алименты 25% в месяц. Ну, мы их так и считаем БАЗА * 25%. Тут вопросов нет.
А если алименты действует до 10.09.2008 и мы считаем за 09.2008, то как нужно вычислять? Есть вариант сокращения итоговой цифры пропорцианально периоду действия. Вот САП и вычисляет это сокращение - в поле NUM заносится значение ЧислоДнейДествия / ЧислоДнейВПериоде. В примере это 10/30. Можно заметить, что RUAD сама сумму алиментов не сокращает, а просто заносит в поле NUM. Сокращение делается в правиле. Если Вам не нужно это сокращение, уберите умножение на NUM.
Приведенный мной код как раз вычисляет сокращение
Code:
it0-anzhl = ( ygar-endda - ygar-begda + 1 ) * lv_gena1.
it0-anzhl = it0-anzhl / ( aper-endda - aper-begda + 1 ).
Пара ygar-begda, ygar-endda содержит период действия алиментов, адаптированый к текущему расчетному периоду. То есть, если алименты полностью входит в период расчта, то эти даты равны периоду расчета. В моем примере это будет 01.09.2008-10.09.2008.
aper-begda и aper-endda - это период расчета.
Первая строчка вычисляет длину периода действия алиментов. Вторая строчка делит эту величину на длину периода расчета (количество дней в месяце).
Получаем
Code:
it0-anzhl = ( 10 - 1 + 1 ) * 1.
it0-anzhl = it0-anzhl / ( 30 - 1 + 1 ).
Переменная lv_gena1 служит для повышения точности вычисления и определяется настройкой в таблице T511K, параметр GENA1 (по умолчанию равна 1). it0-anzhl - это и есть NUM.
Естественно, что все это касается только процентов. Если речь идет о задолженостях (указаны фиксированные суммы), то они не сокращаются.