В начало
Число месяцев долга нарастающим итогом Есть регистр сведений
«Начисления». Необходимо рассчитать число месяцев долга нарастающим итогом в
разрезе контрагентов. Рис.
Независимый регистр сведений «Начисления» Создаем внешнюю обработку, добавляем
на нее Форму, реквизит «Контрагент» и команду «Рассчитать». Рис. Форма
внешней обработки в конфигураторе Далее в модуле формы обработки
описываем необходимые действия в обработчике команды «Рассчитать». Создаем
запрос с обработкой результата в серверной части обработчика событий команды
«Рассчитать». В запросе обращаемся к регистру сведений «Начисления», после чего
выгружаем данные в таблицу значений. Алгоритм нахождения числа месяцев
долга примерно следующий: 1)
с помощью метода
«Итог» таблицы значений рассчитываем итоговую сумму начислений и оплат; 2)
далее сравниваем
итоговые суммы начислений и оплат, если сумма оплат превышает сумму начислений,
то долга нет, а следовательно и месяцев долга тоже нет; 3)
если же сумма
начислений превышает сумму оплат, то нарастающим итогом вычисляем сумму
начислений и сравниваем ее с суммой оплат до тех пор, пока она не превышает ее,
при этом увеличиваем количество оплаченных месяцев; 4)
получив таким
образом, число оплаченных месяцев можно рассчитать число месяцев долга, вычтя
из общего числа месяцев количество оплаченных. Листинг.
Содержимое модуля формы внешней обработки
Запускаемся в пользовательском
режиме и проверяем расчет. Рис.
Проверка правильности расчета Все верно, число месяцев долга равно
двум. |
|||