Как оформить реализацию с двумя предоплатами в УТ 10.3 и исправить ошибку превышения остатка взаиморасчетов?

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

В типовой конфигурации «Управление торговлей 10.3» (УТ 10.3) часто возникают сложности при попытке отразить сложные схемы оплаты, такие как использование подарочных сертификатов совместно с частичной доплатой наличными. Проблема усугубляется требованиями 54-ФЗ, согласно которым в чеке необходимо отображать полную стоимость товара, даже если часть суммы покрывается сертификатом.

Рассмотрим ситуацию, когда при проведении документа Реализация товаров и услуг (РТУ) возникает критическая ошибка: «Указана сумма взаиморасчетов, превышающая непогашенный остаток по документу расчетов с контрагентом!». Мы проанализируем причины этой ошибки и разберем по шагам три способа её решения.

Почему возникает ошибка: технический анализ

Для начала проанализируем, как 1С работает с взаиморасчетами в «ручном» режиме заполнения вкладки «Предоплата». Когда мы добавляем документ оплаты в таблицу предоплаты РТУ, система выполняет запрос к регистру накопления ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов. Она пытается найти свободный остаток (кредитовое сальдо), который еще не был «привязан» к другим отгрузкам.

Разберем фрагмент запроса, который вызывает сбой в процедуре ОтражениеЗадолженностиВРегистреОперативныхРасчетовПоДокументам:


Запрос.Текст = 
"ВЫБРАТЬ
|   ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток * &ЗнакОстатка КАК СуммаВзаиморасчетов
|ИЗ
|   РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(
|       , 
|       Организация = &Организация
|       И Контрагент = &Контрагент
|       И (Сделка, ДокументРасчетовСКонтрагентом) В (ВЫБРАТЬ Сделка, ДокументРасчетовСКонтрагентом ИЗ ТаблицаВзаиморасчетов)) КАК ВзаиморасчетыПоДокументамОстатки";

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

Ниже представлены три проверенных метода решения этой задачи.

Способ 1. Использование механизма «Корректировка долга» (Рекомендуемый для бухгалтерии)

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

  1. Оформление продажи: Создаем документ Реализация товаров и услуг на полную сумму (например, 6000 рублей). Вкладку «Предоплата» оставляем пустой. Проводим документ.
  2. Прием доплаты: На основании реализации создаем Приходный кассовый ордер на фактическую сумму доплаты (5000 рублей). В признаке способа расчета указываем «Полный расчет» (так как мы закрываем долг по уже созданной реализации). Выбиваем чек.
  3. Зачет сертификата: На данный момент по контрагенту «Население» висит долг 1000 рублей по нашей реализации, а на общем документе (Платежное поручение, которым вводили пул сертификатов) висит аванс.
  4. Взаимозачет: Создаем документ Корректировка долга с видом операции «Проведение взаимозачета».
    • В качестве дебитора указываем нашу текущую реализацию (долг покупателя 1000 р.).
    • В качестве кредитора указываем то самое входящее платежное поручение (аванс по сертификату 1000 р.).

Преимущество: Это самый «чистый» способ с точки зрения методологии 1С. Все регистры закрываются корректно, ошибка превышения остатка не возникает.

Способ 2. Использование сертификата как «Платежной карты»

Если нам нужно, чтобы сертификат проходил в чеке ККМ именно как отдельный вид оплаты (например, «Электронными» или «Сертификатом»), проанализируем возможность использования функционала эквайринга.

Рассмотрим порядок действий:

  1. Создадим в справочнике Виды оплат чека ККМ новый элемент «Подарочный сертификат». Тип оплаты выберем «Платежная карта» (даже если это не карта, для системы это способ разграничить потоки денег).
  2. В реализации или в интерфейсе кассира при оформлении оплаты укажем смешанный тип: часть суммы — наличные, часть — наш «сертификат».
  3. Система автоматически создаст документ Оплата от покупателя платежной картой.

Важный момент: Чтобы в чеке ККТ не выводилось слово «Карта», необходимо в настройках драйвера ККМ или в коде обработки обслуживания сопоставить этот вид оплаты с нужной секцией фискального накопителя (обычно тип «Иное» или «Аванс»).

Способ 3. Изменение последовательности документов (для авансовых схем)

Если бухгалтерия настаивает на заполнении вкладки «Предоплата» непосредственно в реализации, мы должны изменить бизнес-процесс:

  1. Сначала создаем Приходный кассовый ордер на сумму доплаты (5000 р.). Важно: в поле «Документ расчетов» ПКО не должна быть указана наша реализация (так как её еще нет). ПКО должен висеть как свободный аванс на договоре.
  2. После проведения ПКО открываем документ Реализация товаров и услуг.
  3. Переходим на вкладку «Предоплата». Нажимаем кнопку «Заполнить».
  4. Теперь система увидит два свободных аванса: 1000 р. (платежное поручение по сертификатам) и 5000 р. (свежий ПКО).
  5. Проводим реализацию. Ошибка не возникнет, так как на момент проведения остатки по обоим документам в регистре уже существуют.

Рекомендации по автоматизации для программиста

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

В модуле документа РеализацияТоваровИУслуг в процедуре ПередЗаписью или в обработке проведения можно добавить код, который будет автоматически искать авансы по определенному договору сертификатов и заполнять таблицу «Предоплата».

Пример логики поиска остатков программно:


Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   Остатки.ДокументРасчетовСКонтрагентом КАК Документ,
|   Остатки.СуммаВзаиморасчетовОстаток КАК Сумма
|ИЗ
|   РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&МоментВремени, ДоговорКонтрагента = &ДоговорСертификатов) КАК Остатки";

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("ДоговорСертификатов", ДоговорСертификатов);
// Далее заполняем ТабличнуюЧасть Предоплата...

Важно помнить: При использовании 54-ФЗ в УТ 10.3 крайне критично следить за полем Признак способа расчета. При отоваривании сертификата в РТУ должен стоять признак «Полный расчет» (с учетом зачета ранее полученного аванса), чтобы налоговая верно интерпретировала выручку.

Выяснив причину ошибки, мы видим, что она носит чисто технический характер и связана с жесткой проверкой остатков в момент проведения. Использование Способа 1 (Корректировка долга) является наиболее универсальным и не требует изменения типового функционала программы.

← На главную