Как реализовать работу с онлайн-кассой в самописной конфигурации 1С

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Реализация работы с контрольно-кассовой техникой (ККТ) в нестандартной или самописной конфигурации — задача комплексная. Она требует не только знания программного кода, но и понимания актуальных требований 54-ФЗ и форматов фискальных данных (ФФД). В этой статье мы подробно разберем, как организовать логику взаимодействия с кассой, какие данные передавать и как правильно обрабатывать типовые операции.

Организация работы со сменами: открытие и закрытие

Первый вопрос, который возникает у разработчика: как программно управлять сменой? Рассмотрим основные правила:

  1. Открытие смены: В современных версиях прошивок ККТ (особенно под ФФД 1.05 и выше) смена открывается автоматически при пробитии первого фискального чека. Однако хорошей практикой считается наличие отдельной кнопки или обработки «Открытие смены». Это позволяет проверить связь с кассой и передать данные текущего кассира до начала продаж.
  2. Закрытие смены: Это действие остается обязательным и выполняется вручную кассиром в конце рабочего дня. Программно это реализуется вызовом метода драйвера для печати Z-отчета.
  3. Проверка статуса: Перед каждой операцией печати чека рекомендуется программно проверять статус смены. Если смена превысила 24 часа, касса заблокируется. В 1С следует добавить проверку, чтобы выводить пользователю понятное предупреждение о необходимости закрыть старую смену.

Формирование и печать чека: обязательные реквизиты

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

Посмотрим на пример логики формирования чека (на языке 1С):


// Пример упрощенной логики добавления позиции в чек
Драйвер.Name = Товар.Наименование;
Драйвер.Price = Товар.ЦенаСоСкидкой;
Драйвер.Quantity = Строка.Количество;
Драйвер.TaxSide = ПолучитьСтавкуНДС(Товар.СтавкаНДС); // Преобразование в индекс налога кассы
Драйвер.Registration();

Возврат прихода и Чек коррекции: в чем разница

Выясним причину путаницы между этими операциями. Выбор зависит от ситуации:

  1. Возврат прихода: Используется, когда происходит реальный возврат товара покупателем или отмена услуги. В этом случае мы формируем чек, который практически полностью дублирует чек продажи, но с признаком «Возврат прихода».
  2. Чек коррекции: Применяется для исправления ошибок, допущенных кассиром или программой. Например, если чек не был пробит вовсе (из-за сбоя электричества), или если была указана неверная сумма. В ФФД 1.1 и 1.2 чек коррекции стал более сложным — в него теперь тоже нужно включать состав товаров, как и в обычный чек.

Важный нюанс: При возврате касса контролирует наличие наличности. Если вы делаете возврат наличными в начале смены, когда в кассе «ноль», ККТ выдаст ошибку. В этом случае в программе нужно реализовать операцию «Внесение денег», прежде чем бить возврат.

Интеграция с эквайринговыми терминалами

Рассмотрим, стоит ли связывать терминал оплаты картами с 1С. Основной профит — исключение человеческого фактора. Если терминал автономен, кассир может ошибиться и ввести на нем одну сумму, а в 1С (и в фискальном чеке) — другую. При интеграции схема выглядит так:

  1. Программа отправляет команду на терминал с точной суммой из документа 1С.
  2. Терминал ожидает прикладывания карты и получает подтверждение от банка.
  3. Только после успешного ответа терминала 1С посылает команду на печать фискального чека в ККТ.

Это гарантирует, что выручка в банковской выписке совпадет с данными ОФД.

Технические детали реализации (для 1С 7.7 и самописок)

Проанализируем техническую сторону. В самописных решениях чаще всего используется прямое обращение к COM-объекту драйвера (например, AddIn.FPrnM45 для Атола). Пошагово процесс выглядит следующим образом:

Обратите внимание на хранение данных. Рекомендуется сохранять в документе оплаты не только внутренний номер 1С, но и Номер чека, полученный от ККТ, а также Номер ФД (фискального документа). Это поможет быстро найти чек в личном кабинете ОФД, если покупатель потеряет бумажный вариант.

Маркировка и современные требования (ФФД 1.2)

Если ваша отрасль предполагает работу с маркированным товаром (одежда, обувь, духи и т.д.), сложность реализации возрастает. Вам необходимо:

  1. Считывать сканером код маркировки (DataMatrix).
  2. Передавать этот код в специальный реквизит чека (тег 1162 или новые структуры в ФФД 1.2).
  3. Для ФФД 1.2 — реализовывать предварительную проверку кода через кассу (запрос КМ).

Даже если сейчас вы не торгуете маркировкой, структуру кода лучше закладывать с учетом расширения. Например, предусмотрите поле для передачи ИНН и наименования покупателя — это обязательно при расчетах между организациями (B2B) наличными или картой.

Подводя итог, реализация работы с ККТ «с нуля» — это отличный способ сделать систему максимально быстрой и удобной для конкретного бизнеса. Главное — следовать логике драйвера и не забывать про обязательные фискальные теги, установленные законом.

← На главную