Изменения в документе реализации:
1. Максимально увеличить точность курса в документе реализация товаров и услуг. На практике хватает 15 знаков после запятой с головой.
2. В модуль реализации в конец процедуры ПередЗаписью вставляем текст из прикрепленного файла, вычисляющий нужный курс реализации на основании регистра ВзаиморасчетыСКонтрагентами. Если управленческие взаиморасчеты отличаются от регламентных - можно поменять на Хозрасчетный.62.
Что делает данный модуль?
1. Смотрим на наличие отрицательного остатка суммы взаиморасчетов (в валюте взаиморасчетов) на момент документа отгрузки в регистре ВзаиморасчетыСКонтрагентами по организации документа и всем контрагентам с ИНН контрагента реализации (бывают случаи, когда имеются контрагенты с одинаковыми ИНН в справочнике). Если его нет - то ставим курс накладной из регистра сведений КурсыВалют на день реализации.
2. Если аванс есть, то формируем таблицу всех уменьшений долга контрагентов с ИНН контрагента реализации. За исключением возвратов товара, таким образом, имеем таблицы всех поступивших платежей и корректировок дога. В этой таблице присутствуют как поля прихода-расхода, так и остатков.
3. Соединяем полученную таблицу с ней же левым соединением с условием Регистратор.МоментВремени <= Регистратор.МоментВремени и с накопительными итогами по сумме расхода. Это необходимо, чтобы вычислить, создавал ли документ аванс, и определить в дальнейшем так называемую "границу текущего аванса".
4. В следующей таблице определяем для каждого документа сумму созданного им аванса.
5. Находим "Границу текущего аванса", выбирая последний по времени документ, создающий аванс из таблицы 4, и сумму аванса, созданного этим документом - ведь он может частично оплачивать долг, а частично создавать аванс.
6. Из таблицы платежей выбираем все документы "моложе" границы аванса - они все создают всю предоплаченную сумму.
Далее нехитрыми уже манипуляциями строим таблицу курсов этих авансов, вычисляем рублевые суммы по каждому, сворачиваем и вуа-ля - получаем сумму аванса валютную и самое главное - ее рублевый эквивалент по курсам оплаты.
Часть реализации, которая гасит аванс, считается по курсу аванса, оставшаяся - по курсу валюты на дату реализации.