Как в 1С:Комплексная автоматизация 2 реализовать отпуск ГСМ по дисконтным картам с формированием Реализаций вместо Чеков?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

В практике автоматизации сетей АЗС на базе 1С:Комплексная автоматизация 2 (КА 2) часто возникает специфическая задача: необходимо обеспечить отпуск топлива корпоративным клиентам по "литровым" картам через стандартное рабочее место кассира (РМК), но при этом избежать формирования обычных розничных чеков и фискализации через кассовый аппарат. Вместо этого система должна фиксировать отгрузку и по итогам смены формировать документы Реализация товаров и услуг (РТУ) на конкретных контрагентов.

Разберем подробно, как можно реализовать такой алгоритм, учитывая требования по списанию остатков в реальном времени и интеграцию с облачными сервисами типа ВебКасса.

Анализ постановки задачи

Прежде чем приступать к кодингу, проанализируем ключевые этапы процесса:

  1. Предоплата: Клиент приобретает определенный объем ГСМ (например, 1000 литров), который зачисляется на его баланс.
  2. Отпуск в РМК: Заправщик или кассир считывает дисконтную карту, видит остаток литров и производит заправку "до полного бака".
  3. Списание: В момент заправки товар должен уйти со склада АЗС, чтобы складские остатки всегда были актуальными.
  4. Документооборот: Вместо Отчета о розничных продажах, который "схлопывает" все продажи в одну кучу, нам нужны индивидуальные реализации для каждого корпоративного клиента.
  5. Фискализация: При отгрузке по ранее оплаченным литрам (договору) чек ККМ не печатается, так как факт оплаты уже был зафиксирован ранее или будет зафиксирован в рамках взаиморасчетов по договору.

Вариант 1. Модификация процесса закрытия кассовой смены

Рассмотрим подход, при котором мы используем штатный механизм РМК, но вносим изменения в логику обработки документов при закрытии смены. Проанализируем ситуацию: в РМК кассир подбирает товар и считывает карту лояльности. В этот момент система определяет партнера, привязанного к карте.

Для реализации этого метода предлагается следующий алгоритм:

Пример логики в процедуре обработки закрытия смены может выглядеть следующим образом:


Процедура ОбработатьЧекиПриЗакрытииСмены(ПараметрыСмены)
    // Выборка чеков за смену
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Ссылка, Партнер, СуммаДокумента ИЗ Документ.ЧекККМ ГДЕ КассоваяСмена = &КассоваяСмена";
    Запрос.УстановитьПараметр("КассоваяСмена", ПараметрыСмены.Ссылка);
    
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        Если ЭтоОтгрузкаПоКарте(Результат.Ссылка) Тогда
            // Создаем реализацию вместо включения в ОРП
            СоздатьРеализациюНаОснованииЧека(Результат.Ссылка);
        Иначе
            // Стандартная обработка для ОРП
            ДобавитьВСписокДляОтчета(Результат.Ссылка);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Вариант 2. Использование схемы с "Оплатой в кредит"

Выясним причину, по которой этот способ считается более "чистым" с точки зрения типовой архитектуры 1С. В КА 2 существует штатный механизм оплаты чеков в кредит. При использовании этого механизма документ Чек ККМ фиксирует передачу товара без немедленной оплаты наличными.

Рассмотрим подробнее шаги реализации:

  1. В настройках РМК разрешается вид оплаты "В кредит".
  2. При считывании карты ГСМ в РМК скрипт автоматически выбирает этот вид оплаты.
  3. При закрытии смены типовая конфигурация часто позволяет оформлять накладные по таким отгрузкам отдельно.
  4. Важный нюанс: Чтобы избежать проблем с нулевой ценой (1С не всегда корректно проводит чеки с нулевой суммой), в чеке сохраняется полная стоимость ГСМ, но она закрывается видом оплаты "Постоплата". Это позволяет корректно сформировать задолженность клиента, которая затем перекроется авансом (теми самыми литрами, купленными ранее).

Решение вопроса с фискализацией (ВебКасса)

Поскольку форма РМК в КА 2 тесно связана с объектом Чек ККМ, при нажатии кнопки "Пробить" система автоматически обращается к подключаемому оборудованию. Чтобы предотвратить печать чека через ВебКассу при отгрузке по картам, необходимо вмешаться в код формы РМК или использовать Расширение.

Проанализируем процедуру печати. В момент вызова команды печати нам нужно добавить проверку:


&НаКлиенте
Процедура Подключаемое_ВыполнитьПечатьЧека(Команда)
    // Проверяем, является ли текущая продажа отгрузкой по литровой карте
    Если Объект.ВидОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатЧекаККМ.Постоплата") Тогда
        // Просто записываем документ без вызова драйвера ККМ
        ЗаписатьДокументОбъект();
        ОчиститьФормуРМК();
    Иначе
        // Вызываем штатную процедуру фискализации
        ПродолжитьПечатьЧекаПоСтандарту();
    КонецЕсли;
КонецПроцедуры

Такой подход гарантирует, что ВебКасса не зафиксирует продажу, а значит, у компании не возникнет лишних налоговых обязательств по розничной выручке, которая по факту является отгрузкой по договору.

Учет остатков ГСМ в реальном времени

Одной из ключевых задач является списание остатков со склада непосредственно в момент заправки. Если мы будем ждать закрытия смены для формирования РТУ, остатки на складе АЗС будут неактуальны в течение дня. Чтобы решить эту проблему, рассмотрим два пути:

Идентификация клиента и "Литровый кошелек"

Для хранения информации о литрах на карте в КА 2 удобнее всего использовать справочник Карты лояльности. В нем есть типовая связь с партнером (контрагентом). Для учета именно "литров" (количественного остатка) можно использовать механизм Бонусных баллов, где 1 балл приравнивается к 1 литру топлива.

Посмотрим, как это работает:

  1. При покупке 1000 литров клиенту начисляется 1000 бонусов.
  2. В РМК при считывании карты кассир видит остаток бонусов.
  3. При оплате выбирается "Оплата бонусами".

Важно: Этот метод требует доработки в части бухгалтерского учета, так как оплата бонусами в типовой логике — это скидка, а для АЗС важно показать реализацию по полной стоимости с зачетом аванса. Поэтому наиболее стабильным решением остается связка "Чек с постоплатой -> РТУ по итогам смены".

Подводя итог, реализация отпуска ГСМ через РМК без создания чеков ККМ возможна через механизм расширений, где мы перехватываем событие печати и меняем логику закрытия смены. Это позволяет сохранить удобство интерфейса РМК для кассира и обеспечить строгий учет взаиморасчетов с корпоративными клиентами в 1С:Комплексная автоматизация 2.

← На главную