При работе в устаревшей, но все еще популярной конфигурации «1С:Торговля и склад 9.2» (на платформе 1С 7.7) пользователи часто сталкиваются с проблемой оформления розничных продаж по безналичному расчету (с использованием банковских карт/эквайринга). Исторически эта конфигурация создавалась в то время, когда оплата банковскими картами в розничных магазинах не была массовым явлением, поэтому типовые механизмы программы ориентированы преимущественно на наличный расчет.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем доступные пути ее решения и приведем конкретные рекомендации и примеры кода для доработки системы под современные требования учета и онлайн-касс (54-ФЗ).
В конфигурации «Торговля и склад 9.2» для оформления розничных продаж предусмотрены два основных пути:
Главная проблема заключается в том, что в типовом документе Реализация (розница) отсутствует реквизит выбора вида оплаты (наличные или безналичные). По умолчанию программа считает всю выручку наличной, что приводит к некорректному формированию кассовых отчетов и невозможности правильно передать тип оплаты в фискальный регистратор (ККТ).
---
Прежде чем приступать к программированию, рассмотрим типовой функционал. Если бизнес-процессы компании позволяют выполнять закрытие кассовой смены в конце дня, то наиболее правильным решением с точки зрения методологии 1С является использование цепочки:
«Чек ККМ» (с признаком безналичной оплаты) -> «Закрытие смены» -> «Отчет о розничных продажах»
В документе Чек ККМ предусмотрена возможность выбора вида оплаты. При формировании итогового Отчета о розничных продажах безналичная выручка будет корректно отделена от наличной, что позволит правильно разнести суммы по счетам учета и сверить данные с банковской выпиской по эквайрингу.
---
Если клиенту критически важно использовать именно документ Реализация (розница) (например, из-за необходимости мгновенного списания партий или специфики документооборота) и пробивать чек непосредственно из него, потребуется небольшая доработка конфигурации.
Разберем по шагам, как реализовать этот функционал:
Для начала нам необходимо предоставить пользователю возможность выбирать, как именно будет оплачен товар. Для этого:
РеализацияРозница.ВидОплатыПеречисление.ВидыОплаты (или создадим новое перечисление с элементами Наличные и Безналичные).Самое важное — передать выбранный вид оплаты в обработку обслуживания ККТ, чтобы на чеке напечатался правильный тип платежа (электронные/безналичные), как того требует закон 54-ФЗ.
Для пробития чека в ТиС обычно используется вызов глобальной функции или обращение к драйверу ККМ. Проанализируем пример кода, который необходимо встроить в процедуру печати чека из документа Реализация (розница):
// Процедура печати фискального чека из документа
Процедура ПробитьФискальныйЧек()
// Проверяем, заполнена ли табличная часть
Если КоличествоСтрок() = 0 Тогда
Предупреждение("Документ пустой! Нечего пробивать.");
Возврат;
КонецЕсли;
// Инициализируем объект драйвера ККТ (на примере АТОЛ)
Попытка
Касса = СоздатьОбъект("AddIn.FPrnM45");
Касса.УстройствоВключено = 1;
Исключение
Предупреждение("Ошибка подключения торгового оборудования! Проверьте связь с ККТ.");
Возврат;
КонецПопытки;
// Входим в режим регистрации
Касса.Режим = 1;
Касса.ВойтиВРежим();
// Открываем чек продажи
Касса.ТипЧека = 1;
Касса.ОткрытьЧек();
// Переносим строки документа в чек ККТ
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Касса.НазваниеТовара = СокрЛП(Товар.Наименование);
Касса.Цена = Цена;
Касса.Количество = Количество;
Касса.Отдел = 1;
// Регистрируем позицию в ККТ
Касса.Регистрация();
КонецЦикла;
// Передаем признак способа оплаты
// В ККТ АТОЛ: ТипОплаты 1 - Наличные, ТипОплаты 2 - Безналичные (электронные)
Если ВидОплаты = Перечисление.ВидыОплаты.Безналичные Тогда
Касса.ТипОплаты = 2;
Иначе
Касса.ТипОплаты = 1;
КонецЕсли;
Касса.Сумма = Итог("Всего");
Касса.Оплата();
// Закрываем и фискализируем чек
Касса.ЗакрытьЧек();
// Отключаем устройство
Касса.УстройствоВключено = 0;
Сообщить("Чек успешно пробит!");
КонецПроцедуры
Важное примечание: Приведенный код является демонстрационным. В зависимости от используемой модели ККТ (Штрих-М, АТОЛ, Вики Принт) и версии установленного драйвера, индексы типов оплаты (параметр ТипОплаты) могут отличаться. Рекомендуем предварительно ознакомиться с документацией конкретного драйвера ККТ.
---
При самостоятельной доработке печати чеков из 1С 7.7 крайне важно учитывать современные требования налогового законодательства. Простые обработки обслуживания прошлых лет не умеют передавать обязательные теги 54-ФЗ. Обратим внимание на следующие критические моменты:
Таким образом, организовать продажу по безналичному расчету в 1С:Торговля и склад 9.2 вполне реально. Вы можете пойти по пути стандартного ведения учета через Чек ККМ, либо кастомизировать документ Реализация (розница), дописав обработку передачи безналичного типа оплаты на ККТ.