Особенности проводок по денежным итогам

Все проводки по денежным итогам делаются через промежуточный итог конвертации Convertation. В базовой конфигурации проверка этого правила осуществляется с помощью скриптов-валидаторов транзакций на денежных итогах (подробнее см. раздел Валидаторы транзакций). В собственной конфигурации ответственность за соблюдение этого правила лежит на прикладном разработчике.

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

Возможность уходить в минус означает, что итог умеет рассчитывать себестоимость не только расходных, но и приходных проводок (только в том случае, когда на денежном итоге есть непогашенный овердрафт). Это делается для того, чтобы при погашении овердрафта в ноль себестоимость нулевого остатка на итоге тоже оказывалась нулевой. Если делать прямые проводки на такой итог с оперативных итогов, минуя конвертацию, после расчета полных движений калькулятором итогов можно получить нарушение правила двойной записи. Происходит это следующим образом:

например, есть прямая проводка с долгов контрагентов на остатки по расчетным счетам. Если расчетный счет в минусе, он сам рассчитает себестоимость пришедшей валюты. Однако в парной проводке будет указана другая себестоимость, поскольку в итоге долгов контрагентов все переменные оперативные и не подлежат пересчету. В результате с контрагента будет списана не та сумма, которая будет оприходована на счет. Расчет итогов зафиксирует критическую ошибку;

аналогичная ситуация возникнет, если сделать прямую проводку с одного счета на другой. Если счет-получатель в овердрафте, оба итога рассчитают себестоимость денег каждый по-своему. В результате снова получится нарушение правила двойной записи и, как следствие, критическая ошибка расчета итогов.

Указанную проблему решает использование промежуточного итога конвертации. Вместо прямой проводки долг -> счет делаем пару проводок: долг -> конвертация, конвертация -> счет. В первой проводке указываются суммы (поскольку итог долгов оперативный, не указать сумму невозможно), во второй проводке не указываются. Вторая проводка будет рассчитана калькулятором итогов, причем себестоимость валюты определит итог-получатель, если он в минусе, либо итог конвертации, в противном случае. В результате все расхождения сумм останутся на итоге конвертации, и правило двойной записи ни одной из проводок нарушено не будет.

Таким образом, итог конвертации выполняет роль буфера, на котором оседают все прибыли и убытки, являющиеся результатом валютообменных операций.

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