В практической деятельности торговых компаний часто возникает ситуация, когда коммерческий отдел в целях минимизации валютных рисков заключает договоры в условных единицах (у.е.), но с особым условием: оплата (включая зачет ранее полученных авансов) производится по курсу на дату отгрузки. С точки зрения гражданского законодательства такая сделка абсолютно законна. Однако при попытке отразить ее в типовых конфигурациях 1С (будь то 1С:УПП, 1С:ERP, 1С:Комплексная автоматизация или 1С:Бухгалтерия) бухгалтеры сталкиваются с жестким ограничением программных алгоритмов.
Выясним причину этой проблемы, проанализируем требования законодательства и разберем по шагам практические способы обхода ограничений системы.
---
Разберем классическую ситуацию. Компания заключила договор в у.е. (например, в евро). Стоимость товара составляет 100 евро. По условиям договора покупатель вносит частичную предоплату, а окончательный расчет производится по курсу на дату отгрузки.
Проанализируем движение денежных средств и товаров:
Согласно условиям договора, покупатель должен доплатить разницу с учетом курса на дату отгрузки. То есть его общая задолженность в рублях рассчитывается как: (100 евро * 72) - 700 рублей = 6 500 рублей. Итоговая рублевая сумма накладной (УПД) должна составить 7 200 рублей.
Однако в типовой программе 1С при проведении документа «Реализация товаров и услуг» (или «Приобретение товаров и услуг» у покупателя) по договору в у.е. рублевая сумма документа рассчитается по смешанному (сложному) курсу:
Часть предоплаты (10 евро * 70) + Часть постоплаты (90 евро * 72) = 700 + 6 480 = 7 180 рублей
Программа 1С автоматически зафиксировала рублевую сумму аванса и отказалась переоценивать ее на дату отгрузки. В результате в печатной форме УПД отразится сумма 7 180 рублей вместо ожидаемых коммерсантами 7 200 рублей. Взаиморасчеты по договору в у.е. «зависнут» и никогда не закроются автоматически.
---
Прежде чем приступать к изменению настроек программы или написанию кода, проанализируем правовую базу. Разработчики 1С не случайно заложили именно такой алгоритм расчета. Он продиктован жесткими требованиями налогового и бухгалтерского законодательства:
ПБУ 3/2006, активы и расходы, которые были оплачены в порядке предварительной оплаты, признаются в бухгалтерском учете в рублевой оценке по курсу на дату совершения платежа (предоплаты). В дальнейшем эти суммы не переоцениваются.Налогового кодекса РФ, при реализации товаров в счет ранее полученной предоплаты налоговая база в части этой предоплаты рассчитывается по курсу на дату ее получения, а в оставшейся части — по курсу на дату отгрузки.НК РФ также прямо запрещают переоценку полученных и выданных авансов.Важное предупреждение: Если вы решите выставить покупателю первичные документы (УПД, счета-фактуры) полностью по курсу на дату отгрузки (проигнорировав курс аванса), у вашего покупателя возникнут огромные налоговые риски. Федеральная налоговая служба (ФНС) с высокой долей вероятности откажет покупателю в вычете НДС по такому документу, поскольку его рублевая сумма и сумма налога рассчитаны в нарушение статьи 153 НК РФ.
Если юристы и руководство компании все же настаивают на ведении расчетов именно по курсу на дату отгрузки, рассмотрим подробнее три практических способа реализации этой схемы в 1С.
---
Это наиболее красивый и методологически безопасный вариант, не требующий привлечения программистов и изменения типовой конфигурации. Идея заключается в том, чтобы разделить сущность аванса и сущность отгрузки в системе.
Разберем по шагам алгоритм действий бухгалтера:
Договоры контрагентов две карточки для одного и того же клиента:
Поступление на расчетный счет, выбрав в качестве аналитики Договор №2 (рублевый). Деньги зачисляются на счет 62.02 как обычный рублевый аванс. Поскольку договор рублевый, никакой переоценки у.е. не происходит.Реализация товаров и услуг. В качестве аналитики выберем Договор №1 (в у.е.). Так как на этом договоре нет никаких зачтенных авансов, программа 1С рассчитает рублевую сумму документа полностью по курсу на дату отгрузки (в нашем примере — 7 200 рублей). УПД и счет-фактура сформируются корректно, без смешанных курсов.Корректировка долга с видом операции «Взаимозачет».Этот способ позволяет сохранить полную автоматизацию расчетов и избежать ручных ошибок, однако требует от бухгалтера жесткого контроля за своевременным проведением документов корректировки долга.
---
Если отгрузки происходят часто, а менеджеры готовы самостоятельно контролировать рублевые суммы на основе валютных прайс-листов, мы можем полностью отказаться от валютного учета в 1С по таким сделкам.
Рассмотрим подробнее этот вариант:
Реализация товаров и услуг вручную.Этот способ идеален с точки зрения отсутствия налоговых рисков и трудозатрат программистов, но перекладывает всю рутинную работу по расчету курсов на плечи менеджеров коммерческого отдела. Он подходит для компаний с небольшим объемом подобных сделок.
---
Если бизнес-процессы компании не допускают ручной работы, а объем сделок велик, единственным выходом становится кастомизация логики проведения документов в 1С. Этот путь подходит для систем 1С:УПП 1.3 или 1С:ERP.
Проанализируем задачу автоматизации. Нам необходимо заставить систему игнорировать зачтенные авансы при расчете рублевой суммы проводки дебета счета 62.01 и кредита счета 90.01.
Для реализации этой схемы программисту необходимо выполнить следующие шаги:
Договоры контрагентов новый реквизит типа Булево: ОплатаПоКурсуНаДатуОтгрузкиБезУчетаАвансов.РеализацияТоваровУслуг (или в общем модуле, отвечающем за расчет рублевых сумм по договорам в у.е., например, в механизмах проведения по регистрам взаиморасчетов) найти участок кода, где происходит распределение сумм по курсам авансов.СуммаВВалюте * КурсДокументаРеализации, полностью игнорируя курсы документов предоплаты.Пример схемы изменения кода в обработке проведения (метакод):
Если ДоговорКонтрагента.ОплатаПоКурсуНаДатуОтгрузкиБезУчетаАвансов Тогда
// Игнорируем стандартный алгоритм зачета авансов для целей расчета суммы документа
КурсДляРасчета = КурсДокумента;
КратностьДляРасчета = КратностьДокумента;
Иначе
// Используем штатный алгоритм со сложным смешанным курсом
КурсДляРасчета = ПолучитьСмешанныйКурсСУчетомАвансов(ДокументСсылка);
КонецЕсли;
Важное примечание для разработчиков: При внедрении такой доработки вам придется также скорректировать алгоритмы заполнения книги продаж и формирования счетов-фактур, так как суммы НДС поползут и перестанут сходиться с типовыми алгоритмами. Помните, что эта доработка делает ведение учета не соответствующим законодательству РФ, поэтому обязательно получите письменное согласование от главного бухгалтера и финансового директора перед запуском кода в рабочую базу.
---
Подводя итоги, мы можем рекомендовать следующие сценарии: