Как исправить ошибку Чек аннулирован в 1С 7.7 при работе с ККТ АТОЛ на ФФД 1.05

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

Переход на формат фискальных данных (ФФД) 1.05 привносит значительные изменения в процесс взаимодействия старых систем, таких как 1С:Торговля и Склад 7.7, с современным кассовым оборудованием. Одной из самых распространенных проблем является ситуация, когда после обновления прошивки кассы чек начинает печататься, но в итоге выходит с надписью «Чек аннулирован». Разберем подробно, почему это происходит и как настроить систему для корректной работы.

Выясняем причины аннулирования чека

Для начала проанализируем, почему кассовый аппарат (ККТ) принимает команду на печать, но прерывает операцию. В ФФД 1.05 появились жесткие требования к составу данных в чеке. Если раньше многие параметры были опциональными, то теперь их отсутствие или некорректность приводят к отказу ККТ завершать операцию.

Рассмотрим основные причины:

  1. Система налогообложения (СНО): В новом формате передача СНО стала обязательной для каждого чека. Если в настройках ККТ указано несколько систем (например, ОСН и ЕНВД), а 1С не передает конкретную, касса аннулирует чек.
  2. Признак способа и предмета расчета: Появились обязательные теги, такие как ПризнакСпособаРасчета (полный расчет, аванс, кредит) и ПризнакПредметаРасчета (товар, услуга, подакцизный товар).
  3. Математические расхождения: ККТ стала строже проверять формулу Цена * Количество = Сумма. Ошибки округления в 1С 7.7, которые раньше игнорировались, теперь могут стать фатальными.
  4. Скидки: Если в документе (например, ПКО или Реализация) есть скидки, которые распределяются по строкам с образованием лишних знаков после запятой, ККТ может отклонить такой итог.

Выбор версии драйвера: АТОЛ 8 или АТОЛ 10

При возникновении проблем часто возникает желание сразу перейти на 10-ю версию драйвера (ДТО 10). Однако в случае с 1С 7.7 это решение требует серьезной переработки кода обработки обслуживания (файлы .ert).

Проанализируем архитектурные различия:

Драйвер версии 8.х работает через классический COM-объект с программным идентификатором AddIn.FprnM45. Большинство типовых и доработанных обработок обслуживания для ТиС 7.7 (например, frATOL54_comm.ert) написаны именно под эту модель.

Драйвер версии 10 использует совершенно иную объектную модель AddIn.AtolKKM_10. Просто заменить файлы в папке EQUIP не получится — программа не увидит методы нового драйвера. Поэтому, если у вас нет готовой платной или глубоко переработанной обработки под 10-ку, рекомендуется использовать драйвер версии 8.16.x. Он вполне успешно поддерживает ФФД 1.05 и совместим со старым кодом 1С 7.7.

Пошаговое решение проблемы с установкой драйвера 8.16

Если при попытке установить драйвер 8.16 вы получаете ошибку «Неизвестная ОС», скорее всего, вы работаете на Windows XP или Windows Server 2003. Современные инсталляторы АТОЛ требуют наличия актуальных библиотек Microsoft Visual C++ и обновлений ядра системы.

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

  1. Найдите компьютер с более современной ОС, где драйвер устанавливается успешно, или распакуйте инсталлятор как архив (например, через 7-Zip).
  2. Извлеките файл FPrnM45.dll.
  3. Скопируйте этот файл на рабочую станцию с 1С 7.7 в системную папку C:\Windows\System32 (или SysWOW64 для 64-битных систем) или непосредственно в папку с базой 1С.
  4. Зарегистрируйте библиотеку в реестре. Для этого нажмите «Пуск» -> «Выполнить» и введите команду: regsvr32 "C:\Windows\System32\FPrnM45.dll"
  5. В настройках торгового оборудования 1С выберите модель, соответствующую 1.05 (например, «АТОЛ 30Ф 1.05»), и убедитесь, что используется программный идентификатор AddIn.FprnM45.

Корректировка обработки обслуживания

Даже после установки драйвера чек может аннулироваться, если сама обработка .ert не передает новые теги. Рассмотрим, какие изменения в коде могут потребоваться (на примере работы с объектом драйвера):

Посмотрим на пример кода, который отвечает за передачу признаков расчета в драйвер 8-й серии:


// Пример установки признака способа расчета
Драйвер.PaymentMode = 4; // Полный расчет
// Пример установки признака предмета расчета
Драйвер.ItemType = 1;    // Товар
Драйвер.Registration();

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

Диагностика через логи драйвера

Чтобы не гадать, почему чек аннулирован, нужно обратиться к лог-файлу драйвера. Это самый точный способ выяснить причину. Для 8-й версии драйвера лог обычно называется FPrnM8.log и находится в папке профиля пользователя (например, %AppData%\Atol\drivers8\).

Проанализируем ситуацию по логу:

Откройте лог текстовым редактором и перейдите в самый конец файла после неудачной попытки пробития чека. Ищите строки с ошибками. Например:

Настройка СНО в 1С 7.7

Для корректной работы в режиме ФФД 1.05 убедитесь, что в обработке обслуживания передается код системы налогообложения. В драйвере АТОЛ 8 за это отвечает свойство TaxVariant.

Рассмотрим значения:

В коде обработки это выглядит примерно так:

Драйвер.TaxVariant = КодСНО; // КодСНО должен соответствовать настройке кассы

Подведем итоги

Для восстановления работы 1С 7.7 с кассами АТОЛ после обновления на ФФД 1.05 не обязательно переходить на 10-й драйвер. Достаточно выполнить следующие действия:

  1. Установить или зарегистрировать вручную компоненту FPrnM45.dll версии 8.16.
  2. Проверить лог-файл драйвера на наличие специфических ошибок (СНО, округление).
  3. При необходимости обновить внешнюю обработку обслуживания (.ert), чтобы она корректно передавала обязательные теги ФФД 1.05.
  4. Если используется старая ОС, убедиться в наличии пакетов Visual C++ 2013-2015, необходимых для работы драйвера.

Использование проверенного 8-го драйвера позволит вам сохранить работоспособность системы без дорогостоящей переписки кода, обеспечив при этом соответствие требованиям законодательства.

← На главную