При обновлении парка контрольно-кассовой техники или переходе на новые версии драйверов в старых конфигурациях, таких как «Управление торговлей 10.3», специалисты часто сталкиваются с аппаратной ошибкой 4459 (Неверный формат команды). Ситуация осложняется тем, что современные кассы (например, Атол 50Ф) работают по протоколам ФФД 1.2, в то время как логика формирования чека в старых обработках обслуживания 1С рассчитана на ФФД 1.05. Рассмотрим подробно причины возникновения этой проблемы и пошаговые методы её решения.
Проанализируем природу ошибки 4459. В большинстве случаев она возникает, когда драйвер ККТ версии 10.х получает от 1С пакет данных, в котором отсутствуют обязательные реквизиты, предусмотренные форматом фискальных данных 1.2. Если ваша касса зарегистрирована под ФФД 1.2, драйвер становится крайне требовательным к структуре команды.
Выясним, какой именно тег может вызывать сбой. С переходом на ФФД 1.2 обязательным стал тег 2108 (мера количества предмета расчета). Даже если вы продаете обычный товар, не подлежащий маркировке, ККТ ожидает передачи этого тега. Старая обработка «УТ 10.3» просто не знает о существовании этого поля и не передает его в структуру CheckPackage. В результате касса отвергает команду печати чека с сообщением о неверном формате.
Разберем технический нюанс, упомянутый в ходе обсуждения. Начиная с версий драйвера Атол 10.8.х и выше, компания изменила имя интеграционной компоненты. Если ранее использовался идентификатор ATOL_KKT_1C83_V10, то в новых версиях он был заменен на ATOL_KKT_1C_V10.
Если в вашей обработке обслуживания прописан старый путь к объекту, 1С не сможет корректно инициализировать драйвер, что приведет к невозможности определения версии или ошибкам при попытке вызвать методы печати. Посмотрим, как это выглядит в коде обработки обслуживания (файл .epf):
// Старый вариант инициализации (для драйверов до 10.8)
Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C83_V10");
// Новый вариант (для драйверов 10.9 и выше)
Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C_V10");
Прежде чем вносить изменения в код, нам необходимо точно знать, под какой формат фискальных данных зарегистрирована касса. Для этого проделаем следующие действия:
Если при попытке настроить параметры торгового оборудования в 1С вы получаете сообщение «Невозможно определить версию драйвера», но при этом сам драйвер в системе установлен, необходимо отредактировать обработку обслуживания.
Рассмотрим алгоритм действий:
.epf, имеющий в названии «ATOL_KKT_10»).Ctrl + F и выполним поиск строки ATOL_KKT_1C83_V10.ATOL_KKT_1C_V10.Проанализируем еще одну частую причину ошибки 4459 — расхождение индексов НДС. В драйвере Атол 10-й версии индексы налогов жестко фиксированы в памяти аппарата. Если в 1С порядок ставок отличается, команда будет отклонена.
Проверим соответствие в «Тесте драйвера ККТ» на вкладке «Налоги». Обычно правильная последовательность выглядит так:
В настройках торгового оборудования в 1С (кнопка «Параметры» в справочнике ККТ) убедитесь, что таблица соответствия налогов настроена именно таким образом. Если 1С отправляет индекс "0", а касса ожидает "1", возникнет ошибка формата.
Если касса работает на ФФД 1.2, а «УТ 10.3» не обновлена, самым надежным (хотя и трудоемким) способом будет доработка функции СформироватьЧек() или аналогичной в обработке обслуживания. Нам нужно добавить передачу обязательного параметра «MeasureOfQuantity» (Мера количества).
Посмотрим на пример того, как должен выглядеть фрагмент кода, подготавливающий строку чека для передачи в драйвер:
// В структуре формирования позиции чека добавляем признак меры количества
// Значение "0" обычно соответствует "Применяется для предметов расчета,
// которые не могут быть реализованы в единицах измерения" или штукам (зависит от настроек)
// Для ФФД 1.2 значение 0 - штуки, 10 - граммы и т.д.
ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_MEASURE_OF_QUANTITY, 0);
// Где 0 - это код единицы измерения по классификатору ФФД
Важно помнить, что если конфигурация сильно доработана и не поддерживает маркировку, а товар маркированный, то простая передача тега 2108 не поможет — потребуется полноценное внедрение механизмов работы с кодами маркировки (DataMatrix), что в «УТ 10.3» реализуется через значительные изменения в модулях проведения документов и формирования XML-пакета чека. В качестве альтернативы трудоемкой доработке старой базы можно выполнить перенос остатков и документов из УТ 10.3 в УТ 11.
Если вы ограничены во времени и не можете оперативно доработать код 1С, рассмотрим альтернативные варианты:
Таким образом, для успешного подключения Атол 50Ф к «УТ 10.3» необходимо обеспечить три условия: соответствие программного идентификатора компоненты в коде 1С, правильную трансляцию налоговых ставок и передачу обязательных тегов ФФД 1.2 (в частности, меры количества). Последовательное выполнение описанных шагов позволит устранить ошибку 4459 и восстановить работоспособность кассового узла. При необходимости можно воспользоваться внешней обработкой обслуживания драйвера ККТ Атол для УТ 10.3 без изменения конфигурации.