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