Структура данных:
Регистр ОстаткиНоменклатуры – для оперативного контроля остатков в разрезе складов, без суммого учета.
Регистр Партии – для учета себестоимости и партий, без учета склада, как сказано в условии.
Регистр Взаиморасчеты – хранит остатки долга. Необходим для быстрого получения остатка долга при расчете суммы аванса.
Оплаты – оборотный регистр, хранит ВСЕ оплаты по ресурсу Сумма, и все авансы по ресурсу СуммаАванс. Необходим для отчета в условии. Оборотный, потому что нельзя допускать остатки невыводимые в ноль.
Последовательность Оплаты, хранит последовательность документов, которые требуется перепровести, если изменялись данные задним числом .
При проведении Расходной накладной используется новая методика контроля остатков по РН ОстаткиНоменклатуры. Если списание успешное, тогда делаются движения по другим регистрам, хотя это можно было сделать отложенным проведением обработкой, но в условии сказано, что авансы рассчитывать надо при проведении.
Обработка ПроведениеРасходныхНакладных проверяет, в разрезе контрагентов, есть ли такие документы, для которых требуется переформировать движения по оплатам, и формирует, а затем сдвигает границу последовательности. Правда при этом формируются не только движения по оплатам, но и взаиморасчеты, партии, что вобщем-то замедляет восстановление последовательности, но думаю это не существенный недостаток, не охота заморачиваться. Отслеживать партионную последовательность в условии не требуется.