Переход на современное оборудование АТОЛ (платформа 5.0) и использование ДТО 10 при работе с устаревшей платформой 1С 7.7 часто сопровождается сложностями, особенно при передаче специфических данных в ФН. Одной из самых частых проблем является статус чека «Не получен» в приложении ФНС, вызванный некорректной передачей тегов покупателя (таких как 1055, 1227, 1228).
Основная сложность заключается в том, что драйвер 10-й версии требует строгого соблюдения последовательности передачи параметров до момента вызова метода openReceipt(). Также при переходе на формат фискальных документов 1.2 требования к структуре реквизитов значительно ужесточились. Если вы передаете данные как простые строки, касса может их игнорировать или неверно интерпретировать.
Для корректной работы рекомендуем соблюдать следующий порядок установки параметров. Обратите внимание, что важно не только содержание тегов, но и их очередность в программном коде.
LIBFPTR_PARAM_RECEIPT_TYPE.openReceipt().Рассмотрим пример правильной последовательности кода для 1С 7.7:
// Установка параметров покупателя
Объект.setParam(1055, Объект.LIBFPTR_TT_PATENT); // Тип покупателя
Объект.setParam(1227, СокрЛП(НаименованиеПокупателя)); // Наименование (тег 1227)
Объект.setParam(1228, СокрЛП(ИННПокупателя)); // ИНН (тег 1228)
// Установка признака электронной передачи
Объект.setParam(Объект.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, Истина);
// Открытие чека
Объект.openReceipt();
В ФФД 1.2 многие реквизиты, такие как 1227 и 1228, объединяются в составные структуры. Если касса прошита на платформу 5.0 и работает в режиме ФФД 1.2, простая передача тега может вызвать ошибку. В таких случаях необходимо использовать механизм формирования составного реквизита. Это делается путем открытия «контейнера» для реквизита, передачи его составляющих и закрытия контейнера.
Если возникают ошибки с ИНН, обязательно очищайте его от спецсимволов перед отправкой, так как драйвер ожидает строго определенный формат строки:
// Очистка ИНН от лишних символов
ИНН = СтрЗаменить(Покупатель.ЮрФизЛицо.ИНН, "/", "\");
Поз = Найти(ИНН, "\");
Если Поз <> 0 Тогда
ИНН = Лев(ИНН, Поз - 1);
КонецЕсли;
Объект.setParam(1228, СокрЛП(ИНН));
Если чек все равно не проходит, единственным надежным источником информации является лог драйвера fptr10.log. Расположение файла зависит от настроек вашей системы, обычно он находится в папке с установленным драйвером ККТ. В логе вы увидите реальный «диалог» между 1С и кассой.
Анализируйте строки, начинающиеся с INFO [FiscalPrinter] >. Если там отсутствуют ваши теги или они идут не в той последовательности, которую вы задали — значит, проблема именно в логике вашего алгоритма в 1С. Сравните ваш лог с эталонным, где передача тегов происходит корректно.
СокрЛП() для строковых параметров, чтобы избежать передачи лишних пробелов, которые могут исказить содержимое тега.2108 (единица измерения), который стал обязательным для всех товарных позиций.Соблюдение этой последовательности и проверка структуры данных через лог-файлы позволят вам успешно настроить работу даже на старой платформе 1С 7.7.