Подробное описание задания можно посмотреть на официальном сайте, повторю здесь только формулировку отчета.
«В отчет включить всех агентов, у которых в заданный период имелись незакрытые договора займа. Агентское вознаграждение рассчитывается по ставке 0,01% от суммы остатка займа на конец каждого дня фактического пользования займом, для займов в иностранной валюте - в пересчете в рубли по курсу, установленному на соответствующий день. Период, за который рассчитывается агентское вознаграждение, задается в диалоге.»
Без потери сложности задачу можно переформулировать, оставив только нетривиальную часть и раскрыв подразумеваемые условия. Получим следующим формулировку.
«Рассчитать сумму в рублях по каждому договору, имевшему остаток в любой день заданного периода на валютном счете займов 66.21, как валютный остаток по договору на конец каждого дня, пересчитанный в рубли по курсу на этот день, а также рассчитать количество дней существования остатка по каждому договору. Учесть следующие условия:
- сумма по договору может быть единожды зачислена и единожды полностью списана, доначисления или частичного списания остатка в валюте не происходит;
- курс валюты устанавливается только при его изменении.»
Вначале следует получить 2 таблицы:
- таблица остатков (1), содержащая периоды существования остатков по договорам: «Договор|Валюта|Дата начала существования остатка (или дата начала периода отчета)|Дата окончания существования остатка (или дата окончания периода отчета)|Остаток в валюте»
- таблица курсов валют (2), содержащая периоды действия курсов: «Валюта|Дата начала действия курса|Дата окончания действия курса (или дата окончания периода отчета)|Курс|Кратность».
Полученные таблицы следует соединить через периоды, при этом будет получена таблица периодов остатков по определенным курсам (3): «Договор|Дата начала периода|Дата окончания периода|Остаток в валюте|Курс|Кратность».
По полученной таблице можно рассчитать требуемые показатели.
Примечание. Отчет создан для консоли отчетов в конфигурации «Бухгалтерия предприятия 8.1» релиза «1.6.20.6». Стандартная настройка отчета позволяет видеть не только итоговые показатели, но и результирующую таблицу 3.
Принимаются замечания, предложения по оптимизации запроса или совершенно новые идеи (отчет действительно интересный, хотелось бы взглянуть на иные варианты решения).