Как правильно настроить интеграцию онлайн-кассы в 1С и устранить частые ошибки при пробитии чеков?

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

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

1. Организация перехода на онлайн-кассу в течение рабочего дня

Рассмотрим ситуацию: на рабочем месте кассира подключен старый фискальный регистратор (ФР), и требуется переключить продажи на новую онлайн-ККТ. Ждать окончания отчетного периода или следующего дня не требуется. Законодательство ограничивает лишь максимальную продолжительность смены — она не может превышать 24 часа. Закрывать смену и снимать Z-отчет можно в любое время.

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

  1. Завершаем текущие расчеты на старом фискальном регистраторе.
  2. Снимаем Z-отчет (отчет с гашением) на старом аппарате и закрываем кассовую смену в учетной системе.
  3. Подключаем и инициализируем в 1С новую онлайн-кассу.
  4. Открываем новую смену на онлайн-ККТ и продолжаем торговлю в штатном режиме.
  5. В конце рабочего дня формируем отчет о закрытии смены уже на новом оборудовании. Наличие двух отчетов закрытия смены за одни календарные сутки является штатной операцией.

2. Настройка вывода «Без НДС» в чеке (исправление ошибочного «НДС 0%»)

Частая проблема организаций на специальных налоговых режимах (УСН, ЕНВД, Патент) — при попытке пробить чек без налога касса выводит на печать НДС 0% вместо Без НДС (НДС не облагается). С точки зрения налогового законодательства это разные ставки (0% — это ставка НДС для экспорта и отдельных льготных операций).

Проанализируем причину: если в параметрах строки чека передать пустую строку "" или числовое значение 0, драйвер фискального регистратора (в частности, АТОЛ и ШТРИХ-М с актуальными прошивками) интерпретирует это как ставку 0%. В соответствии со стандартами разработки подключаемого оборудования 1С (БПО) для передачи признака отсутствия налога необходимо явно указывать служебное значение none.

Посмотрим на пример правильного формирования ставки в модуле фискализации:


Если СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.БезНДС") Тогда 
    РезультатСтавки = "none";
ИначеЕсли СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС0") Тогда 
    РезультатСтавки = "0";
Иначе
    РезультатСтавки = УчетНДС.ПолучитьСтавкуНДС(СтавкаНДС);
КонецЕсли;

СтрокаЧека.СтавкаНДС = РезультатСтавки;

Важно: если после установки значения none возникает ошибка внешней компоненты («Недопустимое значение параметра»), необходимо обновить интеграционную компоненту (DLL-библиотеку драйвера ККТ) в составе конфигурации 1С или каталоге торгового оборудования, так как старые версии библиотек не поддерживали строковый идентификатор none.

3. Формирование XML-пакета данных для фискализации чека

Рассмотрим структуру XML-пакета (CheckPackage), который передается в метод драйвера СформироватьЧек. Данный формат используется в большинстве типовых и нетиповых конфигураций на платформе 1С:


<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters PaymentType="1" TaxVariant="1" SenderEmail="kassa@company.ru" CustomerEmail="client@mail.ru" CustomerPhone=""/>
    <Positions>
        <FiscalString Name="Оказание услуг" Quantity="1" Price="1500.00" Amount="1500.00" Department="1" Tax="none"/>
        <TextString Text="Номер договора: 123-А"/>
    </Positions>
    <Payments Cash="1500.00" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>

При программном вызове метода формирования чека обратите особое внимание на типизацию параметров:


// Переменная Кассир должна быть строго строкового типа, а не ссылкой на СправочникСсылка.Пользователи
КассирСтрока = Строка(ОбщиеПараметры.Кассир);

Результат = ОбъектДрайвера.СформироватьЧек(
    ПараметрыПодключения.ИДУстройства, 
    КассирСтрока, 
    Электронно, 
    ДанныеЧекаXML, 
    НомерЧека, 
    НомерСмены, 
    ФискальныйПризнак, 
    АдресСайтаПроверки
);

Если в параметр Кассир передается объект ссылочного типа, метод внешней компоненты аварийно завершает работу с общей ошибкой вызова метода контекста.

4. Устранение ошибки 4Fh («Неверный пароль администратора») на ККТ ШТРИХ-М

Выясним причину сбоя: при пробитии чека с указанием контактных данных клиента (email или телефон для отправки электронного чека) возникает ошибка: 4Fh, Неверный пароль администратора. При этом чек без контактов пробивается корректно.

При передаче контактных данных (тег 1008) драйвер выполняет обращение к служебным таблицам ККТ, для записи в которые требуются права системного администратора. По умолчанию в настройках подключения 1С может передаваться пароль кассира (значение 1 или 0), а пароль системного администратора остается пустым.

Разберем по шагам, как исправить ошибку:

  1. Открываем утилиту «Тест драйвера ККТ» (Штрих-М) и переходим в «Настройка свойств».
  2. Проверяем пароль системного администратора (в заводских настройках по умолчанию установлен пароль 30).
  3. В 1С открываем справочник «Подключаемое оборудование», выбираем нужную ККТ и переходим в параметры настройки драйвера.
  4. В поле «Пароль системного администратора» (или «Пароль доступа») принудительно прописываем значение 30 (или актуальный пароль, заданный в таблицах устройства).
  5. Сохраняем параметры и повторяем отправку чека с заполненным адресом электронной почты или телефоном.
← На главную