Почему АТОЛ ККТ не печатает ИНН покупателя (тег 1228) на чеке и как это исправить?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При использовании контрольно-кассовой техники (ККТ) АТОЛ в связке с системами 1С иногда возникает ситуация, когда на чеке не выводится ИНН покупателя (тег 1228). Этот реквизит является обязательным при расчетах между организациями или индивидуальными предпринимателями наличными или с использованием банковской карты, поэтому его отсутствие может привести к нарушению требований законодательства (54-ФЗ).

В данном руководстве мы подробно рассмотрим причины возникновения этой проблемы и предложим комплексные шаги по ее устранению, охватывая вопросы совместимости прошивок, драйверов АТОЛ и обработок обслуживания 1С, а также особенности работы с интеграционными компонентами.

Понимание проблемы: Экосистема взаимодействия

Чтобы ИНН покупателя корректно выводился на чеке, необходимо обеспечить бесперебойное и совместимое взаимодействие нескольких ключевых компонентов:

  1. Прошивка контрольно-кассовой техники (ККТ) АТОЛ: Внутреннее программное обеспечение кассы, которое непосредственно управляет печатью фискальных документов.
  2. Драйвер ККТ АТОЛ (ДТО АТОЛ 10.х): Программный компонент, устанавливаемый на компьютер, который обеспечивает связь между ККТ и учетной системой (в нашем случае, 1С).
  3. Обработка обслуживания ККТ в 1С: Внешняя или встроенная компонента 1С, которая адаптирует вызовы из конфигурации 1С к интерфейсу драйвера ККТ.

Критически важно, чтобы все эти компоненты были совместимы друг с другом и поддерживали необходимый функционал, в частности, тег 1228. Часто проблема кроется в несоответствии версий одного из этих звеньев.

Шаг 1: Проверка прошивки контрольно-кассовой техники (ККТ) АТОЛ

Прежде всего, давайте убедимся, что ваша ККТ АТОЛ вообще способна печатать тег 1228. Поддержка реквизитов "Покупатель" (тег 1227) и "ИНН покупателя" (тег 1228) была реализована в прошивках ККТ АТОЛ, начиная с определенных версий. Как правило, для платформы 2.5 (например, АТОЛ 25Ф) это прошивки не ниже 10-7733 или 10-7942. Для платформы 5.0 — не ниже 5.3.3 или 5.4.0.

Рассмотрим, как проверить версию прошивки вашей ККТ:

  1. Через "Тест драйвера ККТ": Запустите утилиту "Тест драйвера ККТ" (обычно доступна в папке установки драйверов АТОЛ). Подключитесь к ККТ и найдите функцию для получения информации о ККТ.
  2. Распечатка чека состояния ККТ: Некоторые модели ККТ позволяют распечатать диагностический чек, на котором будет указана версия прошивки. Обычно это делается через сервисное меню или специальные комбинации нажатий кнопок.
  3. Через личный кабинет АТОЛ Connect: Если ваша ККТ подключена к сервису АТОЛ Connect, вы можете увидеть версию прошивки в личном кабинете.

Если версия прошивки ниже рекомендованной, вам потребуется ее обновить. Обратите внимание, что для обновления прошивки ККТ может потребоваться специальная лицензия или годовая подписка. Рекомендуем обращаться к авторизованным сервисным центрам или в службу поддержки АТОЛ для выполнения этой процедуры.

Шаг 2: Анализ и обновление драйвера ККТ АТОЛ (ДТО АТОЛ 10.х)

Драйвер АТОЛ является связующим звеном между 1С и ККТ. Для корректной работы с тегом 1228 необходим драйвер ККТ АТОЛ версии 10.5.0 или выше. Именно в этой версии драйвера была добавлена полноценная поддержка этих реквизитов и получена сертификация "Совместимо! Система программ "1С:Предприятие"". Если вы используете драйвер версии 10.4.6, как упоминалось в теме, он может быть устаревшим для данного функционала.

Для работы с маркированными товарами и форматом фискальных документов (ФФД) 1.2 рекомендуется обновлять драйвер до версии не ниже 10.6.1. Драйверы версий 8 и 9 не поддерживают актуальный функционал и несовместимы с новыми требованиями.

Ревизии интерфейса драйвера и ошибка "Слишком много фактических параметров"

В процессе обновления драйверов АТОЛ часто меняется так называемая ревизия интерфейса. Это означает, что методы драйвера (функции, которые 1С вызывает для управления ККТ) могут менять свои параметры, количество или тип. Например, как было замечено в теме, драйвер версии 10.4.6 имел ревизию интерфейса 2004, в то время как следующие за ней версии 10.5.х уже имели ревизию 3000 и выше. Отсутствие ревизии 2005 указывает на существенные изменения в интерфейсе.

Именно из-за таких изменений возникает распространенная ошибка "Слишком много фактических параметров" при попытке 1С обратиться к методам нового драйвера. Это происходит, когда старая обработка обслуживания 1С (или ваш доработанный код) вызывает метод драйвера, передавая ему, например, 7 параметров, в то время как новая версия драйвера ожидает уже 6 или 8 параметров, или же параметры изменили свой тип.

Давайте посмотрим, как получить информацию о драйвере и его версии, используя методы драйвера:


ОбъектДрайвера.ПолучитьОписание(НаименованиеДрайвера, ОписаниеДрайвера, ТипОборудования, РевизияИнтерфейса, 
                               ИнтеграционныйКомпонент, ОсновнойДрайверУстановлен, URLЗагрузкиДрайвера);

Однако, как показала практика (сообщение 9), даже этот метод может вызывать ошибку "Слишком много фактических параметров", если версия драйвера изменила свою сигнатуру. В таких случаях, возможно, метод теперь принимает меньше параметров, например, только один:

ОбъектДрайвера.ПолучитьОписание(НаименованиеДрайвера);

В этом случае описание драйвера возвращается в формате XML, которое содержит всю необходимую информацию, включая DriverVersion и IntegrationComponentVersion:


<?xml version="1.0" encoding="UTF-8"?>
 <DriverDescription 
Name="АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.x" 
 Description="АТОЛ: Драйвер ККТ – программный компонент (драйвер), предназначенный для работы с ККТ АТОЛ." 
 EquipmentType="ККТ" IntegrationComponent="true" 
 MainDriverInstalled="true" DriverVersion="10.8.1.0" 
 IntegrationComponentVersion="10.6.2.0" 
 DownloadURL="http://files.atol.ru/temp/1C-installer/dKKT_10.ZIP"  LogIsEnabled="true" 
 LogPath="%AppData%\Roaming\ATOL\drivers10/"
 />

Что делать при ошибке "Слишком много фактических параметров": Эта ошибка однозначно указывает на несовместимость между версией драйвера и кодом 1С, который вызывает его методы. Для ее устранения необходимо обновить обработку обслуживания 1С до версии, совместимой с используемым драйвером. В некоторых случаях может потребоваться ручная корректировка вызовов методов в коде 1С, опираясь на документацию по соответствующей ревизии драйвера на ИТС 1С.

Проверка и обновление драйвера:

  1. Проверяем текущую версию драйвера: Запускаем "Тест драйвера ККТ" или используем вышеописанный код в 1С.
  2. Обновляем драйвер АТОЛ: Скачиваем актуальную версию драйвера АТОЛ 10.х (например, 10.8.1.0 или новее) с официального сайта АТОЛ. Перед установкой новой версии драйвера, настоятельно рекомендуется удалить предыдущую!
  3. Перезагружаем компьютер после установки драйвера.

Шаг 3: Корректировка обработки обслуживания ККТ в 1С

Обработка обслуживания ККТ в 1С — это адаптер между вашей конфигурацией и драйвером АТОЛ. Она может быть встроенной в типовую конфигурацию или использоваться как внешняя. Внутри этой обработки, как правило, находится интеграционный компонент (ActiveX/COM объект), который является основной "перемычкой" к драйверу. Этот компонент также имеет свою версию (IntegrationComponentVersion), которая должна быть совместима с установленным драйвером.

В сообщении 11 была замечена важная деталь: DriverVersion="10.8.1.0", но IntegrationComponentVersion="10.6.2.0". Это означает, что несмотря на установленный новый драйвер 10.8, обработка 1С продолжает использовать старую версию интеграционного компонента (10.6.2.0), что приводит к несовместимости и неработоспособности нового функционала, включая тег 1228.

Способы решения проблем с обработкой обслуживания 1С:

  1. Обновление типовой обработки обслуживания:

    Наиболее простой и рекомендуемый способ – получить актуальную версию обработки обслуживания ККТ. Если вы используете типовую конфигурацию 1С (УТ 10.3 в вашем случае, но это касается и более новых конфигураций), проверьте наличие обновлений обработки на сайте 1С (ИТС) или на сайте АТОЛ в разделе поддержки 1С. После скачивания, зарегистрируйте новую обработку в 1С.

    Важно: убедитесь, что версия обработки совместима как с вашей конфигурацией 1С, так и с новой версией драйвера АТОЛ.

  2. Ручная замена интеграционного компонента (ВК) в обработке обслуживания (для опытных пользователей):

    Если нет готовой обработки, или она устарела, можно попробовать обновить интеграционный компонент вручную. Часто обработка обслуживания 1С представляет собой архив (например, ZIP), внутри которого находится файл интеграционного компонента (например, fptr10.dll или AddIn.dll). Вы можете:

    1. Скачать последнюю версию драйвера АТОЛ 10.х. Обычно это самораспаковывающийся архив.
    2. Распаковать его. Среди файлов вы найдете нужные компоненты.
    3. Открыть файл вашей обработки обслуживания 1С как архив (например, переименовав его в .zip или используя архиватор).
    4. Заменить устаревший файл компонента (например, fptr10.dll) на новый, взятый из свежего драйвера.
    5. Сохранить изменения в архиве обработки.
    6. Перерегистрировать обработку в 1С.

    Этот метод требует осторожности и понимания структуры обработки. Если вы не уверены, лучше обратиться к специалистам.

  3. Проверка кода 1С на передачу тега 1228:

    Убедитесь, что ваша конфигурация 1С (особенно если она дорабатывалась) содержит код, который фактически пытается передать значение ИНН покупателя драйверу. Как правило, это выглядит как заполнение соответствующего атрибута в XML-структуре, передаваемой драйверу. Пример кода может выглядеть так:

    
    // В коде, отвечающем за формирование данных для чека:
    ЗаписьXML.ЗаписатьАтрибут("CustomerINN", XMLСтрока(ОбщиеПараметры.ПолучательИНН));
    

    Удостоверьтесь, что переменная ОбщиеПараметры.ПолучательИНН содержит корректный ИНН покупателя.

  4. Прямая работа с API драйвера (без обработки обслуживания, как крайний случай):

    В особо сложных случаях, когда стандартные обработки не работают или сильно устарели, можно рассмотреть возможность прямой работы с драйвером АТОЛ через его COM-интерфейс, минуя промежуточную обработку обслуживания 1С. Это требует глубоких знаний о драйвере и его API, а также значительных доработок в конфигурации 1С. Документацию по API можно найти на портале АТОЛ.

Диагностика и отладка

Если после выполнения всех предыдущих шагов проблема не решена, переходим к более детальной диагностике:

  1. Просмотр логов драйвера АТОЛ:

    Драйверы АТОЛ ведут подробные логи, которые могут помочь выявить, на каком этапе происходит сбой. Логи обычно находятся по пути %AppData%\Roaming\ATOL\drivers10\. Откройте последний лог-файл (обычно это fptr10.log) текстовым редактором и поищите записи, связанные с CustomerInfo или CustomerINN. Это поможет определить, передает ли 1С данные об ИНН покупателя драйверу и как драйвер их обрабатывает.

  2. Анализ XML-структуры фискальных данных:

    Если ваша обработка 1С формирует XML-файл для передачи данных драйверу, попробуйте перехватить или просмотреть этот XML-файл перед его отправкой. Убедитесь, что в нем присутствует тег CustomerINN с правильным значением. Место формирования этого XML часто находится в общем модуле МенеджерОборудованияВызовСервера или в модуле объекта вашей обработки обслуживания ККТ.

  3. Проверка корректности ИНН:

    Убедитесь, что значение ИНН покупателя, которое вы пытаетесь передать, является корректным. ИНН должен быть 10 или 12 цифр, в зависимости от типа контрагента (юрлицо или ИП). Неправильный формат ИНН также может быть причиной отказа драйвера печатать тег.

Общие рекомендации и выводы

Проблема с непечатью ИНН покупателя (тег 1228) на чеках АТОЛ ККТ является классическим примером несовместимости версий программного обеспечения и оборудования. Наиболее надежным способом решения является комплексное и последовательное обновление всех компонентов:

  1. Обновление прошивки ККТ АТОЛ до версии, гарантированно поддерживающей тег 1228 и ФФД 1.05/1.2.
  2. Обновление драйвера ККТ АТОЛ (ДТО 10.х) до последней актуальной версии (например, 10.8 или новее).
  3. Обновление обработки обслуживания ККТ в 1С до версии, совместимой с новым драйвером, или ручная замена ее интеграционного компонента.

Всегда обращайтесь к официальной документации 1С ИТС и АТОЛ для получения актуальных версий и рекомендаций по совместимости. Систематический подход к обновлению и диагностике поможет вам эффективно устранить эту и подобные проблемы с ККТ.

← На главную