Да уж, условие с распределением затрат довольно запутанное. Возможно, я поняла его слишком буквально, но интерпретировала следующим образом. Имеем:
1) Документы вводятся по мере поступления затрат в течение дня. Нигде не сказано, что по конкретному проекту в конкретный день может быть только один документ ввода затрат.
2) Контролировать наличие продаж по проекту при проведении затрат не нужно - отсюда можно сделать вывод, что не нужно и распределять при проведении. Ведь иначе можно нарваться на деление на ноль. Если нужно было бы распределять, то хорошим тоном было бы все-таки контролировать это в коде, несмотря на "веру" в идеальные действия пользователя.
3) Затраты должны быть отнесены в счет продаж ТЕКУЩЕГО дня. То есть это не остатки на момент времени документа ввода затрат. Это затраты за определенный период.
Все три указанных выше пункта в совокупности навели меня на мысль, что затраты нужно распределять не при проведении документа, а либо регламентным документом, формируемым за каждый день (но это противоречило бы условию задачи), либо непосредственно в отчете. Я распределяла затраты в отчете. Он получился довольно навороченным, но самое интересное, что кажется, работает. Очень надеюсь, что можно было бы решить проще - распределением затрат в документе, но из условия это не очевидно.