При переходе на новые форматы фискальных данных (ФФД 1.05 и 1.2) в соответствии с Федеральным законом № 54-ФЗ многие пользователи устаревших, но активно поддерживаемых конфигураций (таких как 1С:Управление производственным предприятием, редакция 1.3) столкнулись с трудностями при оформлении чеков на зачет предоплаты. Типичная ситуация: покупатель вносит аванс, ему пробивают первый чек, а при последующей отгрузке товара из документа «Реализация товаров и услуг» на зачет аванса программа упорно пытается пробить чек с признаком способа расчета «Отпуск в кредит» (или «Передача в кредит»).
В этой статье мы подробно разберем, почему возникает эта проблема с точки зрения методологии учета и логики работы программы 1С:УПП, а также предоставим пошаговый алгоритм, как настроить систему и документы для корректного формирования чека зачета аванса.
---
Прежде всего выясним, обоснованы ли требования главного бухгалтера пробивать второй чек при передаче товара. С точки зрения налогового законодательства и ФНС РФ, главный бухгалтер абсолютно права.
При осуществлении расчетов, предполагающих предварительную оплату, продавец обязан сформировать два фискальных чека:
Если во втором чеке ККТ напечатает «Отпуск в кредит» (значение 6), для налогового органа это будет сигналом о том, что товар был отгружен в долг без оплаты, и за покупателем числится дебиторская задолженность. Если этот «долг» впоследствии не будет закрыт третьим чеком с признаком «Оплата кредита», у организации могут возникнуть серьезные проблемы при проверках со стороны ФНС, включая штрафные санкции за нарушение порядка применения ККТ.
---
Проанализируем техническую логику работы программы. При попытке пробить чек из документа РеализацияТоваровУслуг (РТУ), система обращается к регистрам взаиморасчетов, чтобы определить, была ли по этой сделке предоплата. Если предоплата обнаружена, программа автоматически формирует чек «Полный расчет» с зачетом аванса. Если предоплата не найдена, программа логично считает, что товар отпускается без оплаты, и выводит признак «Передача в кредит».
В конфигурации 1С:УПП при ведении взаиморасчетов по договорам с детализацией «по заказам» этот механизм чаще всего дает сбой по следующим причинам:
---
Рассмотрим последовательность действий, которая позволит исправить ошибку и получить в чеке заветный признак «Полный расчет» с зачетом аванса без привлечения программистов.
Убедимся, что платежный документ (Приходный кассовый ордер или Оплата от покупателя по платежной карте) по времени стоит строго раньше, чем документ «Реализация товаров и услуг». Например, если ПКО проведен в 12:00:00, то Реализация должна быть проведена хотя бы в 12:00:01 того же дня или позже.
Поскольку взаиморасчеты ведутся в разрезе заказов, выполним следующие проверки:
Заказ покупателя, по которому происходит сделка.РеализацияТоваровУслуг. Убедимся, что в шапке документа (или в табличной части «Товары», если включена соответствующая настройка видимости колонок) выбран тот же самый Заказ покупателя.Проверим настройки учетной политики организации. Перейдем в меню: Настройка параметров учета — Взаиморасчеты. Для того чтобы зачет авансов определялся в момент проведения документов (что критически важно для корректной работы онлайн-касс в течение дня), должен быть установлен флаг «Определять зачет авансов при проведении документов».
Примечание: Если в вашей компании исторически зачет авансов перенесен на конец месяца (регламентным документом) для ускорения проведения документов, то оперативно пробивать чеки зачета аванса штатными средствами без доработки программы будет крайне затруднительно, так как программа в момент отгрузки не будет видеть зачтенных сумм.
Запомним важное правило работы в 1С:УПП: никогда не пытаемся пробивать чек из непроведенного документа!
Сначала мы обязаны нажать кнопку «Провести» в документе «Реализация товаров и услуг». Только после успешного проведения, когда система сделает все движения по регистрам накопления взаиморасчетов и свяжет отгрузку с ранее полученной предоплатой, мы нажимаем кнопку «Чек» на панели документа.
---
В старых релизах 1С:УПП интеграционная библиотека ККТ может содержать устаревшие алгоритмы анализа регистров. Если все настройки выполнены верно, документы проведены последовательно, а программа все равно выводит в чек «Отпуск в кредит», проблему придется решать программным путем.
Для этого программисту 1С необходимо локализовать процедуру подготовки XML-пакета данных для ККТ. Обычно эта логика находится в общем модуле МенеджерОборудованияВызовСервераПереопределяемый или в модуле менеджера документа РеализацияТоваровУслуг (в зависимости от релиза конфигурации).
Проанализируем пример кода, который принудительно переопределяет признак способа расчета на «Полный расчет» (Передача с полной оплатой), если по регистру взаиморасчетов у данного контрагента по этому заказу нет реального долга после проведения реализации:
// Пример корректировки структуры данных чека перед отправкой на ККТ
Процедура КорректироватьСпособРасчетаВЧеке(ТаблицаТоваровЧека, ДокументСсылка) Экспорт
// Проверяем, что документ-основание — Реализация товаров и услуг
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// Запрос к регистру взаиморасчетов для проверки остатка долга по сделке
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыОстатки.СуммаВзаиморасчетовОстаток КАК ОстатокДолга
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(
| &Период,
| ДоговорКонтрагента = &Договор
| И Сделка = &Сделка) КАК ВзаиморасчетыОстатки";
Запрос.УстановитьПараметр("Период", Новый Граница(ДокументСсылка.МоментВремени(), ВидГраницы.Включая));
Запрос.УстановитьПараметр("Договор", ДокументСсылка.ДоговорКонтрагента);
Запрос.УстановитьПараметр("Сделка", ДокументСсылка.Сделка); // Заказ покупателя
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
// Если остаток долга равен нулю или отрицательный (переплата),
// принудительно устанавливаем признак способа расчета "Полный расчет" (значение 5 или соответствующее перечисление)
Если Выборка.ОстатокДолга <= 0 Тогда
Для Каждого СтрокаЧека Из ТаблицаТоваровЧека Цикл
СтрокаЧека.ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчетаОплатыККТ.ПолныйРасчет;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Такая небольшая доработка позволит гарантированно избежать ошибок человеческого фактора и технических сбоев старых механизмов распределения взаиморасчетов в УПП, обеспечивая абсолютную чистоту учета перед налоговыми органами.
---
Для успешного пробития чека зачета аванса в 1С:УПП без ошибок типа «Отпуск в кредит» всегда соблюдайте простые правила: контролируйте хронологию документов, следите за тем, чтобы платеж и реализация были привязаны к одному и тому же заказу, проверяйте проведение реализации перед печатью и убедитесь, что в системе включен оперативный зачет авансов при проведении документов.