Вообще, проблема в чем? В том, что механизм 68-го класса обработки работает не в тот момент времени, когда нужно. Этот механизм должен работать, когда работа с базой уже полностью завершена. Но при использовании 28-й кумуляции база /120 окончательно формируется позже. В результате, при обратном расчете мы сравниваем /120 текущего расчета, который еще до конца не сформирован, с /120 базой прошлого расчета, который был сформирован полностью. При таком подходе при наличии ВО /128 всегда будет выявляться разница, которая затем будет куда-нибудь переносится в соответствии с логикой 68-го класса.
То есть, /120 должен адаптироваться раньше, чем работает 68-класс. Вот только 28 кумуляция сама использует механизм 68-го класса, поэтому мы не можем просто перенести процедуру адаптации /120 на сумму /128 (правило RU76) выше.
BVM177, вот что можно сделать в вашем случае для 2013 года. Нужно выполнить обработку 68-го класса дважды: сначала в только в отношении ВО /128, затем для всех остальных. Цепочка действий в случае обратного расчета должна быть примерно такой: - правила 68-го класса (RUES, RUE5, RUE6) для /128 - затем RU76 P76 NOAB - затем (RUES, RUE5, RUE6) для всех остальных. (далее там еще раз будет выполнен RU76 P76 NOAB, но это не помешает, так как /128 уйдет из IT на первом вызове)
Как это можно сделать. Для 68-го класса добавляете новое значение (для определенности пусть будет $), это значение присваиваете ВО /128 с 01.01.2013. Делаете копию правил (RUES, RUE5, RUE6), в которых удаляете все ветки, кроме 8, которую в свою очередь переименовываете в $. Вставляете обработку этих правил перед стандартными, затем вызов RU76, затем стандартные (RUES, RUE5, RUE6).
Первый прогон 68-го класса восстановит /128, затем произойдет адаптаций /120, а затем уже полностью собранный /120 будет сравниваться со старым расчетом. Таком образом, изменения /120 произойдет только, когда действительно какие-то новые суммы пройдут.
|
|