При использовании контрольно-кассовой техники (ККТ) АТОЛ в связке с системами 1С иногда возникает ситуация, когда на чеке не выводится ИНН покупателя (тег 1228). Этот реквизит является обязательным при расчетах между организациями или индивидуальными предпринимателями наличными или с использованием банковской карты, поэтому его отсутствие может привести к нарушению требований законодательства (54-ФЗ).
В данном руководстве мы подробно рассмотрим причины возникновения этой проблемы и предложим комплексные шаги по ее устранению, охватывая вопросы совместимости прошивок, драйверов АТОЛ и обработок обслуживания 1С, а также особенности работы с интеграционными компонентами.
Чтобы ИНН покупателя корректно выводился на чеке, необходимо обеспечить бесперебойное и совместимое взаимодействие нескольких ключевых компонентов:
Критически важно, чтобы все эти компоненты были совместимы друг с другом и поддерживали необходимый функционал, в частности, тег 1228. Часто проблема кроется в несоответствии версий одного из этих звеньев.
Прежде всего, давайте убедимся, что ваша ККТ АТОЛ вообще способна печатать тег 1228. Поддержка реквизитов "Покупатель" (тег 1227) и "ИНН покупателя" (тег 1228) была реализована в прошивках ККТ АТОЛ, начиная с определенных версий. Как правило, для платформы 2.5 (например, АТОЛ 25Ф) это прошивки не ниже 10-7733 или 10-7942. Для платформы 5.0 — не ниже 5.3.3 или 5.4.0.
Рассмотрим, как проверить версию прошивки вашей ККТ:
Если версия прошивки ниже рекомендованной, вам потребуется ее обновить. Обратите внимание, что для обновления прошивки ККТ может потребоваться специальная лицензия или годовая подписка. Рекомендуем обращаться к авторизованным сервисным центрам или в службу поддержки АТОЛ для выполнения этой процедуры.
Драйвер АТОЛ является связующим звеном между 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С — это адаптер между вашей конфигурацией и драйвером АТОЛ. Она может быть встроенной в типовую конфигурацию или использоваться как внешняя. Внутри этой обработки, как правило, находится интеграционный компонент (ActiveX/COM объект), который является основной "перемычкой" к драйверу. Этот компонент также имеет свою версию (IntegrationComponentVersion), которая должна быть совместима с установленным драйвером.
В сообщении 11 была замечена важная деталь: DriverVersion="10.8.1.0", но IntegrationComponentVersion="10.6.2.0". Это означает, что несмотря на установленный новый драйвер 10.8, обработка 1С продолжает использовать старую версию интеграционного компонента (10.6.2.0), что приводит к несовместимости и неработоспособности нового функционала, включая тег 1228.
Наиболее простой и рекомендуемый способ – получить актуальную версию обработки обслуживания ККТ. Если вы используете типовую конфигурацию 1С (УТ 10.3 в вашем случае, но это касается и более новых конфигураций), проверьте наличие обновлений обработки на сайте 1С (ИТС) или на сайте АТОЛ в разделе поддержки 1С. После скачивания, зарегистрируйте новую обработку в 1С.
Важно: убедитесь, что версия обработки совместима как с вашей конфигурацией 1С, так и с новой версией драйвера АТОЛ.
Если нет готовой обработки, или она устарела, можно попробовать обновить интеграционный компонент вручную. Часто обработка обслуживания 1С представляет собой архив (например, ZIP), внутри которого находится файл интеграционного компонента (например, fptr10.dll или AddIn.dll). Вы можете:
fptr10.dll) на новый, взятый из свежего драйвера.Этот метод требует осторожности и понимания структуры обработки. Если вы не уверены, лучше обратиться к специалистам.
Убедитесь, что ваша конфигурация 1С (особенно если она дорабатывалась) содержит код, который фактически пытается передать значение ИНН покупателя драйверу. Как правило, это выглядит как заполнение соответствующего атрибута в XML-структуре, передаваемой драйверу. Пример кода может выглядеть так:
// В коде, отвечающем за формирование данных для чека:
ЗаписьXML.ЗаписатьАтрибут("CustomerINN", XMLСтрока(ОбщиеПараметры.ПолучательИНН));
Удостоверьтесь, что переменная ОбщиеПараметры.ПолучательИНН содержит корректный ИНН покупателя.
В особо сложных случаях, когда стандартные обработки не работают или сильно устарели, можно рассмотреть возможность прямой работы с драйвером АТОЛ через его COM-интерфейс, минуя промежуточную обработку обслуживания 1С. Это требует глубоких знаний о драйвере и его API, а также значительных доработок в конфигурации 1С. Документацию по API можно найти на портале АТОЛ.
Если после выполнения всех предыдущих шагов проблема не решена, переходим к более детальной диагностике:
Драйверы АТОЛ ведут подробные логи, которые могут помочь выявить, на каком этапе происходит сбой. Логи обычно находятся по пути %AppData%\Roaming\ATOL\drivers10\. Откройте последний лог-файл (обычно это fptr10.log) текстовым редактором и поищите записи, связанные с CustomerInfo или CustomerINN. Это поможет определить, передает ли 1С данные об ИНН покупателя драйверу и как драйвер их обрабатывает.
Если ваша обработка 1С формирует XML-файл для передачи данных драйверу, попробуйте перехватить или просмотреть этот XML-файл перед его отправкой. Убедитесь, что в нем присутствует тег CustomerINN с правильным значением. Место формирования этого XML часто находится в общем модуле МенеджерОборудованияВызовСервера или в модуле объекта вашей обработки обслуживания ККТ.
Убедитесь, что значение ИНН покупателя, которое вы пытаетесь передать, является корректным. ИНН должен быть 10 или 12 цифр, в зависимости от типа контрагента (юрлицо или ИП). Неправильный формат ИНН также может быть причиной отказа драйвера печатать тег.
Проблема с непечатью ИНН покупателя (тег 1228) на чеках АТОЛ ККТ является классическим примером несовместимости версий программного обеспечения и оборудования. Наиболее надежным способом решения является комплексное и последовательное обновление всех компонентов:
Всегда обращайтесь к официальной документации 1С ИТС и АТОЛ для получения актуальных версий и рекомендаций по совместимости. Систематический подход к обновлению и диагностике поможет вам эффективно устранить эту и подобные проблемы с ККТ.