Уважаемые гуру нужна Ваша помощь, помогите пожалуйста, есть задача посчитать средневзвешенную ставку в %, есть данные по счету 1 и счету 2 считается следующим образом: по счету1 по всем компаниям, кроме компании А % займа*на сумму займа. аналогично по счете 2, только без ограничений по компании А, т.е. для нее так же релевантно. цикл по компаниям везде где выполняются условия ниже, затем должно в итоге получится: сумма займа компании 1*% займа компании 1+ сумма займа компании 2 * %займа компании 2 и т.д. для всех компаний кроме А, к тому что получилось прибавляем по счету 2 сумму займа по всем компаниям без ограничения * % займа всех компаний, то что получилось делим на сумму займа всех 2 счетов. Например: на счете 1 сумма у контрагента 1 = 500, % 11 на счете 2 у контрагента 2 сумма = 1000, % 15 на счете 2 у контрагента 2 сумма = 100, % 12 должно получится 14% а у меня получается по первому блоку 11 и по второму блоку 27. * РАСШИРЕНИЕ ФИЛЬТРА IF NOT L_PLEVEL IS INITIAL. L_PLEVEL = VARV(SVAR_0CS_PLEVEL_I10). L_PER = VARV(SVAR_0FISCPER3_I2). ENDIF.
L_KZS = OBJV().
FOREACH L_PER, L_PLEVEL, L_CURR, L_DOC, L_CRATE, L_COMP IN REFDATA. IF L_PER <= L_TEC_PER AND L_PLEVEL = '00'. L_SUM1 = L_SUM1 + {0CS_TRN_QTY, L_PLEVEL, L_PER, 'компанияА', 'FIX', '1', 'USD', #}. ENDIF. IF L_PLEVEL <= '01'. L_RATETYPE = ATRV(SCRATE, L_KZS). L_CURRKZS = ATRV(SCURRENCY, L_KZS).
IF NOT (L_COMP = 'компанияА' AND L_CURR = 'RUB'). L_VAL_A = L_VAL_A + {0CS_TRN_QTY, L_PLEVEL, L_PER, L_COMP, 'FIX', '1', L_CURR, L_DOC}. L_VAL_B = L_VAL_B + {0CS_TRN_GC, L_PLEVEL, L_PER, L_COMP, 'FIX', '1', L_CURR, L_DOC}.
ENDIF.
IF NOT L_CURRKZS = 'RUB' AND L_CURR = # AND L_CRATE = # AND L_RATETYPE = 'FIX'. L_VAL_C = L_VAL_C + {0CS_TRN_QTY, L_PLEVEL, L_PER, L_COMP, #, '2', #, L_DOC}. L_VAL_D = L_VAL_D + {0CS_TRN_GC, L_PLEVEL, L_PER, L_COMP, #, '2', #, L_DOC}. ENDIF. IF NOT L_CURR = 'RUB' AND L_CRATE = 'FIX'. L_VAL_E = L_VAL_E + {0CS_TRN_GC, L_PLEVEL, L_PER, L_COMP, 'FIX', '1', L_CURR, L_DOC}. ENDIF.
* ДОСТАЕМ ЗНАЧЕНИЕ АТРИБУТА ИЗ ПЕРЕМЕННЫХ. L_RATETYPE = ATRV(SCRATE, L_KZS). L_CURRKZS = ATRV(SCURRENCY, L_KZS).
IF L_RATETYPE = 'FIX' AND NOT L_CURRKZS = 'RUB' AND L_CRATE = # AND L_CURR = #. L_VAL_F = L_VAL_F + {0CS_TRN_GC, L_PLEVEL, L_PER, L_COMP, #, '2', #, L_DOC}. ENDIF. ENDIF. ENDFOR. {0CS_TRN_QTY, 00, L_PER, 'компанияА', 'FIX', '1', 'USD', L_DOC} = (L_VAL_A * L_VAL_B + L_VAL_C * L_VAL_D) / (L_VAL_E + L_VAL_F ).
|
|