При интеграции кассового аппарата АТОЛ FPrint-22ПТК (или АТОЛ 22Ф) с самописной конфигурацией 1С через COM-объект драйвера разработчики нередко сталкиваются с ошибкой: (-12) Не поддерживается в данной версии оборудования при вызове метода Registration(). Разберем по шагам, почему возникает эта ошибка и какие действия необходимо предпринять для корректной регистрации позиций и печати чека.
Проанализируем базовую причину несовместимости команд. Аппараты линейки FPrint-22ПТК выпускались как в старых версиях с ЭКЛЗ (протокол 2.4), так и в обновленных версиях для онлайн-передачи данных по 54-ФЗ (протокол 3.0). Если в коде или в утилите настройки драйвера выбрана устаревшая модель (например, АТОЛ: FPrint-22ПТК / К / ЕНВД), драйвер пытается отправить команду старого формата, которую прошивка новой онлайн-кассы не поддерживает, возвращая код -12.
Для исправления ситуации выполним следующие настройки:
AddIn.FprnM45), установим числовой код модели, равный 63 (соответствует АТОЛ 22Ф / FPrint-22ПТК по протоколу 3.0), перед открытием соединения:
ECR.Model = 63;
ECR.DeviceEnabled = Истина;
Посмотрим на типовую ошибку в логике работы с драйвером. В старых версиях оборудования допускалась прямая регистрация строк без явного открытия фискального документа. В онлайн-ККТ вызов метода Registration() без предварительного открытия чека заблокирован и приводит к ошибке -12.
Рассмотрим правильный порядок вызова методов при пробитии чека продажи:
Mode = 1).CheckType = 1 для чека прихода/продажи) и вызываем OpenCheck().TaxNumber или TaxTypeNumber) и вызываем Registration().CloseCheck().Посмотрим на пример корректного кода для ДТО 8:
// 1. Вход в режим регистрации
ECR.Password = 30;
ECR.Mode = 1;
Если ECR.SetMode() <> 0 Тогда
ВызватьИсключение "Ошибка переключения режима: " + ECR.ResultDescription;
КонецЕсли;
// 2. Открытие фискального чека продажи
ECR.CheckType = 1; // 1 - Приход (продажа)
Если ECR.OpenCheck() <> 0 Тогда
ВызватьИсключение "Ошибка открытия чека: " + ECR.ResultDescription;
КонецЕсли;
// 3. Регистрация товарной позиции
ECR.Name = "Молоко";
ECR.Price = 10.45;
ECR.Quantity = 1;
ECR.Department = 1;
ECR.TaxTypeNumber = 4; // Ставка НДС (например, Без НДС)
Если ECR.Registration() <> 0 Тогда
ВызватьИсключение "Ошибка регистрации позиции: " + ECR.ResultDescription;
КонецЕсли;
// 4. Закрытие чека (оплата наличными)
ECR.TypeClose = 0; // Наличные
ECR.Summ = 10.45;
Если ECR.Delivery() <> 0 Тогда
ВызватьИсключение "Ошибка оплаты: " + ECR.ResultDescription;
КонецЕсли;
Если ECR.CloseCheck() <> 0 Тогда
ВызватьИсключение "Ошибка закрытия чека: " + ECR.ResultDescription;
КонецЕсли;
Выясним, почему ошибка -12 может возникать на нефискализированном аппарате. В онлайн-версиях ККТ стандартная прошивка полностью блокирует выполнение фискальных методов (включая Registration()), если в аппарате отсутствует или не активирован фискальный накопитель (ФН).
Если требуется использовать ККТ в качестве принтера нефискальных чеков (АСПД/ЕНВД):
Caption и метод PrintString()) без использования методов Registration() и OpenCheck().Если ранее при пробитии чека произошел сбой (закончилась бумага, был отключен кабель), аппарат может остаться в заблокированном подрежиме. В этом состоянии любые попытки регистрации вызывают ошибку -12.
Для восстановления работоспособности:
CancelCheck().EC 02 и перезагрузим устройство.Линейка драйверов DTO 8 является устаревшей. Для стабильной работы современных касс АТОЛ рекомендуется:
AddIn.Fptr10, где логика унифицирована через методы openReceipt(), registration(), closeReceipt().