Добрый день. Не уверен, что задача решена правильно.
Документ «Приход денег». В описании решения сказано:
В документе «Приход денег» в задании явно не указано, но данные в отчете подсказывают
нам, что списание происходит именно по валютной сумме, а не рублевой
А в коде:
Превышение = СуммаОплаты — ВыборкаИтоги.ВалютныйОстатокВРублях;
Если Превышение > 0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = «Сумма оплаты превышает имеющийся долг контрагента на » + Превышение;
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
Так же в коде:
Если ОсталосьСписать >= Выборка.ВалютныйОстатокВРублях Тогда
// списывается вся валютная сумма
СписываемВВалюте = Выборка.ВалютныйОстаток;
СписываемВРублях = Выборка.ВалютныйОстатокВРублях;
Иначе // списывается часть валютной суммы
СписываемВРублях = ОсталосьСписать;
СписываемВВалюте = ? (Выборка.Курс = 0, 0, СписываемВРублях / Выборка.Курс);
КонецЕсли;
Зачем списывать валютную сумму в пропорции рублевой?
Остатки по валюте выводятся в ноль документом — «Приход денег».
Остатки в рублях выводятся в ноль документами — «Приход денег» и «Операция».
Я думаю нужно контролировать списание именно в валюте.
Сумму в рублях записывать как валютную сумму по курсу на момент документа.