При оформлении продаж по посредническим договорам (комиссия, агентские схемы) в программе 1С:Бухгалтерия пользователи часто сталкиваются с аппаратными и программными ошибками в момент пробития чека на фискальном регистраторе ККТ. Данная проблема обострилась после вступления в силу изменений в 54-ФЗ, ужесточивших требования к оформлению чеков посредниками. В этой статье мы подробно разберем причины возникновения таких сбоев и пошагово рассмотрим методы их устранения.
При продаже комиссионного товара или услуги кассовый чек должен содержать информацию о фактическом владельце этого товара (поставщике/комитете). Согласно требованиям форматов фискальных данных (ФФД), в XML-пакет, передаваемый из 1С в кассовый аппарат, должны в обязательном порядке записываться следующие реквизиты:
Если хотя бы один из этих тегов сформирован некорректно или отсутствует в структуре данных при настроенном комиссионном признаке, кассовое ядро отклонит команду печати чека, и программа выдаст ошибку.
Среди пользователей и некоторых технических специалистов распространено заблуждение, что для пробития комиссионных чеков требуется обязательный переход на версию ФФД 1.1 или ФФД 1.2. Проанализируем эту ситуацию с технической точки зрения.
Формат ФФД 1.05 полностью поддерживает комиссионные (агентские) теги. Переходить на более высокие версии формата фискальных данных только ради продажи комиссионных товаров не требуется. Главное — обеспечить соответствие внутреннего программного обеспечения самой ККТ и драйверов торгового оборудования актуальным требованиям.
Часто при анализе чека информации о ККТ АТОЛ или отчета о регистрации пользователи видят обозначение 1245 (или полную версию фискального ядра 3.0.1245) и принимают его за версию драйвера или прошивки. Разберем этот момент подробнее.
Число 1245 — это не версия драйвера ККТ. На платформе АТОЛ 2.5 это универсальный *идентификатор программного обеспечения ККТ* (модели ядра фискального процессора). Он одинаков для большинства аппаратов данного поколения.
Реальная версия прошивки ККТ записывается как «ID серии» (например, 10-7942, 12-8531 и т. д.). Для успешной работы с комиссионными тегами под ФФД 1.05 прошивка вашего аппарата АТОЛ должна быть версии 10-7942 и выше. Именно в этих версиях внутреннего ПО была реализована полноценная поддержка тегов покупателя и расширенных признаков предмета расчета (таких как тег 1212).
Версия драйвера АТОЛ (ДТО) имеет формат типа 10.5.x.x, 10.8.x.x или 10.10.x.x. Для корректной трансляции XML-пакетов из 1С в ККТ настоятельно рекомендуется использовать версию ДТО не ниже 10.5.0.0.
Даже если у вас установлена последняя версия 1С:Бухгалтерии, обновлены драйверы и прошивка кассы, чек все равно может не пробиться с ошибкой вида «Ошибка программирования реквизита 1057» или «Недопустимое сочетание реквизитов».
Причина кроется в параметрах регистрации самого фискального накопителя в ФНС. При регистрации (или перерегистрации) кассового аппарата в утилите фискализации АТОЛ обязательно должна быть установлена галочка «Комиссионер» (или «Агент»). Если ККТ зарегистрирована как обычная касса в режиме «Оказание услуг/Продажа товаров» без признака посредника, то при попытке 1С передать в чек тег 1222 касса аппаратно заблокирует эту операцию, так как это нарушает параметры ее регистрации.
Рассмотрим по шагам, какие настройки должны быть выполнены внутри учетной системы 1С для правильного формирования пакета данных ККТ:
004.01 «Товары на складе»).тег 1224 требует строковой передачи контактного номера телефона поставщика.Разберем неочевидный баг, с которым сталкиваются многие пользователи. В ряде релизов «Библиотеки подключаемого оборудования» (БПО), встроенной в 1С:Бухгалтерию, отсутствовала автоматическая очистка передаваемых строковых значений от лишних пробелов по краям.
Если в карточке контрагента в поле телефона или Email закрался случайный пробел (например, в начале строки: " +79991112233" или в конце email: "info@test.ru "), то при парсинге JSON-запроса драйвер ККТ АТОЛ 10.х вернет ошибку: «Некорректные параметры в команде» или «Ошибка парсинга запроса».
Для исправления этой проблемы в кодовой базе 1С разработчики используют принудительную очистку строк методом СокрЛП(). Посмотрим на пример кода, который решает эту задачу при подготовке данных для ККТ:
// Очистка контактных данных перед отправкой в БПО
Функция ПодготовитьКонтактныеДанныеДляККТ(ЗначениеРеквизита) Экспорт
// Удаляем концевые и начальные пробелы
ОчищеннаяСтрока = СокрЛП(ЗначениеРеквизита);
// Удаляем неразрывные пробелы, которые часто копируются из веб-форм
ОчищеннаяСтрока = СтрЗаменить(ОчищеннаяСтрока, Символы.НПП, "");
Возврат ОчищеннаяСтрока;
EndФункции
Если вы не имеете возможности вносить изменения в конфигурацию программным путем, то решением станет ручная проверка карточек контрагентов на наличие лишних символов пробела или обновление конфигурации 1С:Бухгалтерия до актуального релиза, где эта ошибка в БПО уже исправлена.
Если при попытке пробить чек программа выдает ошибку, выполним следующие действия для локализации проблемы:
Выполнение этих шагов гарантирует успешное устранение большинства аппаратных и программных сбоев при печати посреднических фискальных документов.