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