Как в 1С настроить учет по договорам в у.е., если оплата должна производиться по курсу на дату отгрузки при наличии предоплат?

Бухгалтер 1С v8.3 (Обычные формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

В практической деятельности торговых компаний часто возникает ситуация, когда коммерческий отдел в целях минимизации валютных рисков заключает договоры в условных единицах (у.е.), но с особым условием: оплата (включая зачет ранее полученных авансов) производится по курсу на дату отгрузки. С точки зрения гражданского законодательства такая сделка абсолютно законна. Однако при попытке отразить ее в типовых конфигурациях 1С (будь то 1С:УПП, 1С:ERP, 1С:Комплексная автоматизация или 1С:Бухгалтерия) бухгалтеры сталкиваются с жестким ограничением программных алгоритмов.

Выясним причину этой проблемы, проанализируем требования законодательства и разберем по шагам практические способы обхода ограничений системы.

---

В чем суть проблемы и почему «бунтует» 1С?

Разберем классическую ситуацию. Компания заключила договор в у.е. (например, в евро). Стоимость товара составляет 100 евро. По условиям договора покупатель вносит частичную предоплату, а окончательный расчет производится по курсу на дату отгрузки.

Проанализируем движение денежных средств и товаров:

  1. Предоплата: Покупатель перечисляет аванс в размере 700 рублей. На дату оплаты курс евро составляет 70 рублей. Таким образом, условно оплачено 10 евро.
  2. Отгрузка: На дату отгрузки курс евро вырос до 72 рублей. Полная стоимость товара на эту дату составляет 7 200 рублей (100 евро * 72 руб.).

Согласно условиям договора, покупатель должен доплатить разницу с учетом курса на дату отгрузки. То есть его общая задолженность в рублях рассчитывается как: (100 евро * 72) - 700 рублей = 6 500 рублей. Итоговая рублевая сумма накладной (УПД) должна составить 7 200 рублей.

Однако в типовой программе 1С при проведении документа «Реализация товаров и услуг» (или «Приобретение товаров и услуг» у покупателя) по договору в у.е. рублевая сумма документа рассчитается по смешанному (сложному) курсу:

Часть предоплаты (10 евро * 70) + Часть постоплаты (90 евро * 72) = 700 + 6 480 = 7 180 рублей

Программа 1С автоматически зафиксировала рублевую сумму аванса и отказалась переоценивать ее на дату отгрузки. В результате в печатной форме УПД отразится сумма 7 180 рублей вместо ожидаемых коммерсантами 7 200 рублей. Взаиморасчеты по договору в у.е. «зависнут» и никогда не закроются автоматически.

---

Что говорит законодательство РФ?

Прежде чем приступать к изменению настроек программы или написанию кода, проанализируем правовую базу. Разработчики 1С не случайно заложили именно такой алгоритм расчета. Он продиктован жесткими требованиями налогового и бухгалтерского законодательства:

Важное предупреждение: Если вы решите выставить покупателю первичные документы (УПД, счета-фактуры) полностью по курсу на дату отгрузки (проигнорировав курс аванса), у вашего покупателя возникнут огромные налоговые риски. Федеральная налоговая служба (ФНС) с высокой долей вероятности откажет покупателю в вычете НДС по такому документу, поскольку его рублевая сумма и сумма налога рассчитаны в нарушение статьи 153 НК РФ.

Если юристы и руководство компании все же настаивают на ведении расчетов именно по курсу на дату отгрузки, рассмотрим подробнее три практических способа реализации этой схемы в 1С.

---

Решение №1. Использование схемы с раздельными договорами (без доработки 1С)

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

Разберем по шагам алгоритм действий бухгалтера:

  1. Создадим в справочнике Договоры контрагентов две карточки для одного и того же клиента:
    • Договор №1 (Основной): Вид договора — «С покупателем», расчеты ведутся в у.е. (например, цена в EUR, оплата в рублях). Этот договор будет использоваться только для документов отгрузки.
    • Договор №2 (Для авансов): Вид договора — «С покупателем», расчеты ведутся строго в рублях. Этот договор используется только для регистрации предоплат.
  2. При получении предоплаты от клиента проведем документ Поступление на расчетный счет, выбрав в качестве аналитики Договор №2 (рублевый). Деньги зачисляются на счет 62.02 как обычный рублевый аванс. Поскольку договор рублевый, никакой переоценки у.е. не происходит.
  3. В момент отгрузки создадим документ Реализация товаров и услуг. В качестве аналитики выберем Договор №1 (в у.е.). Так как на этом договоре нет никаких зачтенных авансов, программа 1С рассчитает рублевую сумму документа полностью по курсу на дату отгрузки (в нашем примере — 7 200 рублей). УПД и счет-фактура сформируются корректно, без смешанных курсов.
  4. Сразу после проведения реализации нам необходимо произвести зачет рублевого аванса. Для этого создадим документ Корректировка долга с видом операции «Взаимозачет».
  5. В документе укажем:
    • Дебитор: наш контрагент по Договору №1 (в у.е.).
    • Кредитор: наш контрагент по Договору №2 (в рублях).
  6. Нажмем кнопку «Заполнить». Программа автоматически сопоставит рублевый аванс (700 рублей) и рублевую дебиторскую задолженность (7 200 рублей). После проведения документа задолженность покупателя на Договоре №1 уменьшится на 700 рублей и составит ровно 6 500 рублей, которые он и должен доплатить.

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

---

Решение №2. Ведение расчетов полностью в рублях с ручным контролем цен

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

Рассмотрим подробнее этот вариант:

  1. Договор в системе регистрируется как обычный рублевый договор.
  2. Выставленный клиенту счет на оплату создается также в рублях, но для удобства в печатной форме или дополнительных реквизитах шапки документа (которые можно вывести с помощью дополнительных сведений) менеджер указывает справочную цену в у.е.
  3. Поступающие авансы отражаются по рублевому договору и накапливаются на счете 62.02.
  4. В день отгрузки менеджер берет количество отгружаемого товара, умножает его на цену в у.е. и умножает полученный результат на текущий курс валюты на дату отгрузки. Полученная рублевая сумма вносится в документ Реализация товаров и услуг вручную.
  5. Поскольку договор рублевый, программа 1С зачтет ранее накопленный рублевый аванс рубль в рубль, а остаток долга зафиксирует по курсу отгрузки.

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

---

Решение №3. Доработка проведения документов (для программистов)

Если бизнес-процессы компании не допускают ручной работы, а объем сделок велик, единственным выходом становится кастомизация логики проведения документов в 1С. Этот путь подходит для систем 1С:УПП 1.3 или 1С:ERP.

Проанализируем задачу автоматизации. Нам необходимо заставить систему игнорировать зачтенные авансы при расчете рублевой суммы проводки дебета счета 62.01 и кредита счета 90.01.

Для реализации этой схемы программисту необходимо выполнить следующие шаги:

  1. Добавить в справочник Договоры контрагентов новый реквизит типа Булево: ОплатаПоКурсуНаДатуОтгрузкиБезУчетаАвансов.
  2. В модуле проведения документа РеализацияТоваровУслуг (или в общем модуле, отвечающем за расчет рублевых сумм по договорам в у.е., например, в механизмах проведения по регистрам взаиморасчетов) найти участок кода, где происходит распределение сумм по курсам авансов.
  3. Внедрить проверку: если у договора установлен созданный нами флаг, то расчет рублевой стоимости реализации должен производиться строго по формуле: СуммаВВалюте * КурсДокументаРеализации, полностью игнорируя курсы документов предоплаты.

Пример схемы изменения кода в обработке проведения (метакод):


Если ДоговорКонтрагента.ОплатаПоКурсуНаДатуОтгрузкиБезУчетаАвансов Тогда
    // Игнорируем стандартный алгоритм зачета авансов для целей расчета суммы документа
    КурсДляРасчета = КурсДокумента;
    КратностьДляРасчета = КратностьДокумента;
Иначе
    // Используем штатный алгоритм со сложным смешанным курсом
    КурсДляРасчета = ПолучитьСмешанныйКурсСУчетомАвансов(ДокументСсылка);
КонецЕсли;

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

---

Резюме: какое решение выбрать?

Подводя итоги, мы можем рекомендовать следующие сценарии:

← На главную