Переход на формат фискальных данных (ФФД) 1.2 принес немало сложностей пользователям старых конфигураций, таких как 1С:Управление торговлей 10.3. Одной из самых распространенных проблем стала блокировка печати чека с ошибкой «Ошибка программирования реквизита 1256 (или 1243)». Давайте разберем природу этой ошибки и найдем способы её решения, исходя из требований законодательства и особенностей реализации драйверов АТОЛ.
Для начала выясним, что это за реквизиты и почему ККТ отказывается принимать чек. Согласно приказу ФНС, в формате 1.2 значительно ужесточились требования к идентификации покупателя при определенных видах расчетов. Проанализируем ключевые теги:
Основная проблема заключается в логической связке: если в чек передается Наименование покупателя (тег 1227), то драйвер кассы в режиме ФФД 1.2 требует обязательного заполнения либо ИНН (тег 1228), либо расширенного набора данных, включающего Дату рождения (тег 1243) и данные документа, удостоверяющего личность.
В конфигурации УТ 10.3 при пробитии чека из документов «Реализация товаров и услуг» или «Приходный кассовый ордер» программа автоматически подставляет ФИО контрагента. Если это физическое лицо, у которого в базе не заполнен ИНН, возникает конфликт: ФИО передано, а ИНН — нет. Драйвер АТОЛ пытается найти дату рождения, не находит её (или получает пустое значение) и выдает ту самую ошибку программирования реквизита.
Рассмотрим самый очевидный и правильный с точки зрения поддержки путь. Фирма «1С» выпустила обновления для УТ 10.3, адаптированные под ФФД 1.2. Проанализируем необходимые действия:
ATOLKKT.epf (или аналогичный из состава дистрибутива).Как показывает практика, в новых релизах логика формирования XML-пакета для кассы была пересмотрена. Программа теперь более корректно обрабатывает ситуацию, когда покупатель является физическим лицом.
Если обновление не помогло или временно невозможно, разберем методику настройки данных в самой базе. Проверим следующие моменты в карточке контрагента:
Установка типа контрагента. Убедимся, что в поле «Юр. / физ. лицо» выбрано значение Физ. лицо. Это напрямую влияет на то, какие теги обработка печати будет пытаться заполнить. Если по ошибке стоит «Юр. лицо», но ИНН не заполнен (или заполнен некорректно, например, 9 цифр для иностранных граждан), касса выдаст ошибку.
Заполнение ИНН. Рассмотрим ситуацию с иностранными покупателями (например, из Беларуси). У них ИНН может иметь другую разрядность. Если драйвер не принимает такой ИНН, попробуем полностью очистить поле ИНН в карточке. В этом случае, если обработка обслуживания написана корректно, она должна перестать передавать и ФИО покупателя, что позволит пробить чек без ошибок идентификации.
Заполнение ИНН нулями. Некоторые пользователи практикуют заполнение ИНН строкой «000000000000». Это позволяет «протолкнуть» чек через драйвер, однако стоит помнить, что в ОФД такой чек может уйти с предупреждением о некорректном ИНН, что в дальнейшем может вызвать вопросы у налоговых органов.
Если вы столкнулись с ситуацией, когда даже актуальная обработка ATOLKKT.epf продолжает передавать пустые реквизиты, вызывая ошибку, мы можем прибегнуть к программной корректировке. Рассмотрим логику внесения изменений:
Нам необходимо найти процедуру, отвечающую за формирование XML для драйвера (обычно это функции внутри модуля обработки обслуживания, работающие с объектом МенеджерОборудования). Нам нужно добавить условие: если ИНН покупателя не заполнен, то и ФИО (тег 1227) передавать не следует.
Пример логики на языке 1С (псевдокод):
Если ПустаяСтрока(ДанныеЧека.ИННПокупателя) Тогда
// Если ИНН нет, удаляем ФИО, чтобы ККТ не требовала дату рождения
ДанныеЧека.НаименованиеПокупателя = "";
КонецЕсли;
Такой подход позволяет пробивать чеки на физлиц в упрощенном режиме, как это происходит в интерфейсе «Чек ККМ» розничной торговли, где покупатель по умолчанию обезличен.
Часто после исправления ошибок 1256/1243 пользователи сталкиваются с ошибкой программирования реквизита 1008. Этот реквизит отвечает за электронный адрес или телефон покупателя. Разберем, почему это происходит:
В ФФД 1.2 формат передачи телефона стал очень строгим. Он должен передаваться в международном формате, начинаясь с «+». Например: +79001112233. Если в карточке контрагента телефон записан со скобками, пробелами или через «8», драйвер 10-й версии выдаст ошибку 1008.
Проанализируем шаги для исправления:
При переходе на ФФД 1.2 пользователи также замечают, что в чеках пропадает привычный признак [M] для маркированных товаров. Выясним причину. В новом формате вместо единого признака введены статусы [M+] (проверка в ИС МП прошла успешно), [M-] (проверка провалена) или [M] (проверка не проводилась или статус неизвестен).
Если марки в ОФД видны, но в Честном Знаке они не списываются, это означает, что ККТ не выполнила запрос на проверку кода маркировки перед закрытием чека. Это происходит, если:
Для решения этой проблемы мы рекомендуем убедиться, что в настройках оборудования выбран драйвер версии 10, поддерживающий ФФД 1.2, и в параметрах ККТ установлена соответствующая версия ФФД.
Подводя итог нашему разбору, выделим основные этапы борьбы с ошибкой реквизита 1256:
Во-первых, обновляемся. Релизы 10.3.72.x и драйверы 10.9.x содержат большинство исправлений. Во-вторых, проверяем контрагентов. Если не хотите менять код, заполняйте ИНН у всех физических лиц, по которым делаете отгрузки через «Реализацию». В-третьих, если данные покупателя не критичны для передачи в ФНС, исключаем ФИО из чека программным путем, чтобы снять требование ККТ по заполнению даты рождения.