В современной розничной и оптовой торговле часто возникает ситуация, когда покупатель — физическое лицо — принимает решение оплатить товар не картой через POS-терминал на кассе, а напрямую по реквизитам организации через мобильный банк или отделение банка. Деньги в этом случае поступают непосредственно на расчетный счет компании.
Согласно требованиям Федерального закона № 54-ФЗ, продавец обязан выдать кассовый чек при любых расчетах с физическими лицами, включая безналичные переводы на расчетный счет. Однако на практике эта обязанность вызывает у бухгалтеров и кассиров множество вопросов и технических трудностей. Разберем основные проблемы, с которыми сталкиваются компании, и рассмотрим детальные алгоритмы их решения в программах 1С.
При попытке отразить такие операции в учетной системе стандартными методами возникают два ключевых препятствия:
РеализацияТоваровУслуг для списания остатков, а розничный магазин одновременно пробивает чек через документ ЧекККМ (который в конце дня попадает в ОтчетОРозничныхПродажах), возникает двойное списание товаров со склада и двойное отражение выручки по управленческому учету.Выясним, как построить правильную логику документооборота и решить эти проблемы как в современных конфигурациях 1С, так и в более старых (например, в доработанных версиях 1С:Управление торговлей 10.3).
Согласно разъяснениям Министерства финансов и налоговых органов, если момент оплаты и момент передачи товара не совпадают во времени (что практически всегда происходит при оплате на расчетный счет), организация обязана сформировать два кассовых чека:
В современных конфигурациях 1С этот функционал реализован на уровне платформы и не требует доработок кода. Рассмотрим пошагово, как должна выглядеть цепочка документов:
ПоступлениеБезналичныхДенежныхСредств с видом операции «Оплата от покупателя». Выбираем контрагента (физическое лицо) и договор.ПоступлениеБезналичныхДенежныхСредств нажимаем кнопку «Пробить чек». Программа автоматически сформирует XML-пакет для ККТ с признаком способа расчета «Предоплата 100%» и типом оплаты «Безналичными». Физический товар на данном этапе со склада не списывается.РеализацияТоваровУслуг. Этот документ списывает остатки со склада и закрывает взаиморасчеты по договору с контрагентом.РеализацияТоваровУслуг нажимаем кнопку «Пробить чек». Система анализирует структуру подчиненных документов, видит ранее проведенное поступление безналичных денежных средств и автоматически отправляет на фискальный накопитель чек с признаком «Полный расчет» и способом оплаты «Зачет аванса».При такой схеме товар списывается строго один раз (документом реализации), а выручка отражается корректно и без удваивания.
Если ваша база данных существенно доработана и обновиться на современную версию нет возможности, логику пробития чеков придется дописать программисту. Проанализируем, как решить технические проблемы разделения потоков денежных средств и автоматизации пробития.
Чтобы кассир в конце дня не путался при сверке итогов по POS-терминалу, нам необходимо разделить виды безналичных оплат в самой системе 1С. Для этого выполним следующие действия:
ОплатаОтПокупателяПлатежнойКартой), а безналичные переводы на расчетный счет — сразу на 51 счет через выписку. При закрытии смены кассир будет четко видеть, какая часть безналичной выручки пришла через терминал, а какая — напрямую в банк.Для программиста задача сводится к созданию механизма фискализации из документа ПлатежноеПоручениеВходящее. Рассмотрим пример упрощенного кода, который можно интегрировать в форму документа или встроить в виде внешней подключаемой обработки для пробития чека на аванс:
Процедура ПробитьЧекНаПредоплату(ДокументСсылка) Экспорт
// Получаем объект фискального регистратора
ПоддерживаемоеОборудование = ПолучитьОбработкуОбслуживанияККМ();
// Создаем структуру параметров чека
ПараметрыЧека = Новый Структура;
ПараметрыЧека.Вставить("ПризнакРасчета", Перечисления.ПризнакиРасчета.Приход);
ПараметрыЧека.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.Предоплата100);
ТаблицаТоваров = Новый ТаблицаЗначений;
ТаблицаТоваров.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаТоваров.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТаблицаТоваров.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТаблицаТоваров.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ТаблицаТоваров.Колонки.Добавить("СтавкаНДС", Новый ОписаниеТипов("ПеречислениеСсылка.СтавкиНДС"));
// Заполняем табличную часть на основе расшифровки платежа
Для Каждого СтрокаПлатежа Из ДокументСсылка.РасшифровкаПлатежа Цикл
НоваяСтрока = ТаблицаТоваров.Добавить();
НоваяСтрока.Номенклатура = СтрокаПлатежа.СтатьяДвиженияДенежныхСредств; // Или обобщенная позиция "Предоплата по договору"
НоваяСтрока.Количество = 1;
НоваяСтрока.Цена = СтрокаПлатежа.СуммаПлатежа;
НоваяСтрока.Сумма = СтрокаПлатежа.СуммаПлатежа;
НоваяСтрока.СтавкаНДС = СтрокаПлатежа.СтавкаНДС;
КонецЦикла;
ПараметрыЧека.Vставить("Товары", ТаблицаТоваров);
ПараметрыЧека.Вставить("ТипОплаты", Перечисления.ТипыОплатыЧека.Безналичные);
// Вызов функции фискализации драйвера ККТ
РезультатПечати = ПоддерживаемоеОборудование.ПечатьЧека(ПараметрыЧека);
Если Не РезультатПечати Тогда
ВызватьИсключение "Ошибка печати чека на ККМ!";
КонецЕсли;
КонецПроцедуры
Чтобы избежать штрафов со стороны налоговых органов за неприменение ККТ и не запутаться в учете, рекомендуем придерживаться следующего чек-листа:
Использование данной методологии позволит вам полностью соблюдать требования ФЗ-54, сохраняя порядок в бухгалтерском и складском учете программного комплекса 1С.