Как безопасно протестировать печать чеков на нефискализированной ККТ и настроить оборудование в 1С

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При доработке нетиповых или устаревших конфигураций (например, на базе 1С:УПП) под требования 54-ФЗ часто возникает необходимость проверить корректность работы кассового модуля. Разберем ключевые вопросы, с которыми сталкиваются разработчики: портит ли тестовая печать фискальный накопитель, как правильно передавать ставки НДС из документов и как настроить передачу чеков в ОФД через локальный прокси-сервер.

Влияние тестовой печати на нефискализированный ФН и гросс-итог

Проанализируем, что происходит с кассовым аппаратом и фискальным накопителем (ФН) при попытке пробить тестовые чеки до официальной регистрации кассы в ФНС.

Если фискальный накопитель установлен в кассу, но процедура фискализации (регистрации) еще не была пройдена, кассовый аппарат функционирует в нефискальном (учебном) режиме. В этом состоянии:

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

Таким образом, выполнять тестовые пробития документов до регистрации кассы абсолютно безопасно. Однако для полноценной сквозной проверки передачи данных в тестовый ОФД или проверки маркировки рекомендуется использовать массогабаритный макет (МГМ) накопителя.

Формирование чека и расчет ставок НДС в устаревших документах

В старых конфигурациях в табличных частях розничных документов (таких как ЧекККМ) часто отсутствуют явные реквизиты для ставки и суммы НДС, которые стали строго обязательными по форматам фискальных документов (ФФД 1.05, 1.2).

При формировании XML-пакета для передачи в драйвер торгового оборудования обработка обслуживания должна заполнять теги ставки налога (тег 1199) и суммы налога (тег 1200). Выясним, как решается эта задача:

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

Посмотрим на пример алгоритма подготовки данных товарной позиции для формирования XML-пакета кассового чека:


Для Каждого Стр Из ТаблицаТоваров Цикл
    ТоварнаяПозиция = Новый Структура;
    ТоварнаяПозиция.Вставить("Наименование", Стр.Номенклатура.Наименование);
    ТоварнаяПозиция.Вставить("Количество", Стр.Количество);
    ТоварнаяПозиция.Вставить("Цена", Стр.Цена);
    ТоварнаяПозиция.Вставить("Сумма", Стр.Сумма);
    
    // Определение ставки и расчет суммы НДС
    СтавкаНДС = Стр.Номенклатура.СтавкаНДС;
    ТоварнаяПозиция.Вставить("СтавкаНДС", СтавкаНДС);
    
    Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
        ТоварнаяПозиция.Вставить("СуммаНДС", Окр(Стр.Сумма * 20 / 120, 2));
    ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
        ТоварнаяПозиция.Вставить("СуммаНДС", Окр(Стр.Сумма * 10 / 110, 2));
    Иначе
        ТоварнаяПозиция.Вставить("СуммаНДС", 0);
    КонецЕсли;
    
    МассивПозиций.Добавить(ТоварнаяПозиция);
КонецЦикла;

Управление сменой и проведение возвратов

Рассмотрим правила взаимодействия учетной системы и кассового аппарата при управлении сменами и возвратами:

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

Настройка передачи данных в ОФД через службу EthernetOverUSB и прокси-сервер

При подключении ККТ по интерфейсу USB для передачи чеков в ОФД используется системная служба EthOverUsb (EoU) или встроенный транспорт драйвера. Служба транслирует сырой TCP-трафик от кассы на IP-адрес и порт сервера ОФД.

Если рабочее место кассира или сервер не имеют прямого выхода в интернет и работают через корпоративный прокси-сервер, стандартные HTTP-прокси не смогут передать бинарный кассовый поток. Разберем по шагам схему решения:

  1. На прокси-сервере настраиваем проброс TCP-порта (Port Forwarding) на внешний IP-адрес и порт целевого оператора фискальных данных (ОФД).
  2. В конфигурационном файле службы settings.ini (для службы EoU) либо в утилите настройки драйвера ККТ указываем адрес локального прокси-сервера и назначенный локальный порт для проброса.
  3. Проверяем сетевую доступность порта с рабочего места кассира и выполняем тест связи с ОФД через драйвер ККТ.
← На главную