Обновление драйверов ККТ АТОЛ для совместной работы с 1С:Предприятие

  • Автор:

1C-ATOL-driver-update-000.pngВзаимоотношения 1С:Предприятия и торгового оборудования традиционно остаются натянутыми. Основная проблема в том, что эти взаимодействия находятся на стыке технологий и мало кто стремится разобраться как это все устроено. 1С-ники кивают в сторону сервисных инженеров, инженеры в сторону 1С-ников, из них каждый по-своему даже прав, только легче от этого никому не становится. А тем временем некорректная работа ККТ является достаточно серьезным нарушением и чревата штрафными санкциями. Поэтому давайте разбираться как это все устроено и что нужно сделать, чтобы кассовый узел работал правильно.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

С момента появления первых онлайн-касс требования к составу чека неоднократно менялись, это касается как информации, печатаемой на бумаге, так и набора реквизитов передаваемых в ОФД. Это связано как с расширением количества передаваемой информации, так и появлением новых видов товаров, подлежащих отдельному регулированию, в частности это касается продукции подлежащей маркировке.

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

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

1C-ATOL-driver-update-001.pngС одной стороны у нас имеется кассовая программа, в примерах ниже это будет 1С:Розница, с другой стороны ККТ, которая печатает бумажные чеки и передает данные в ОФД. Современные кассы являются достаточно сложными устройствами и имеют собственное внутреннее ПО (прошивку), которое также необходимо своевременно обновлять.

Для взаимодействия кассы и программного обеспечения используется Драйвер ККТ, не следует путать его с драйвером для операционной системы, хотя и тот, и другой выполняют одну и ту же роль - предоставляют программам универсальный интерфейс для работы с оборудованием. Программе не нужно знать особенности работы конкретной модели оборудования, достаточно использовать стандартные, описанные в документации вызовы. Драйвера ККТ также регулярно обновляются для поддержки всех новых требований законодательства.

Дальше, казалось бы, все просто. 1С:Предприятие взаимодействует с драйвером ККТ, тот с кассой. Обновили конфигурацию, обновили драйвер и все должно быть хорошо. Однако это не так. Между конфигурацией и драйвером ККТ есть еще один уровень взаимодействия - интеграционный компонент. Что это такое и для чего нужно?

1С:Предприятие - это сложное высокоуровневое ПО, использующее собственный язык разработки и для упрощения взаимодействия с внешним оборудованием использует еще один уровень абстракции. Чтобы разработчикам не приходилось разбираться в особенностях взаимодействия с тем или иным видом оборудования на уровне 1С:Предприятия были созданы унифицированные интерфейсы взаимодействия, которые предусматривают стандартный и документированный набор команд.

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

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

Таким образом, чтобы касса соответствовала всем требованиям законодательства мы должны обеспечить такое соответствие для всех четырех используемых компонентов: нужные изменения должны поддерживаться прошивкой кассового аппарата, драйвером ККТ, интеграционным компонентом и конфигурацией 1С.

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

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

Если мы откроем его, то увидим, что интеграционная компонента не установлена, но это можно исправить прямо здесь через меню Функции.

1C-ATOL-driver-update-002.pngПосле чего картинка немного изменится, в поле Текущий статус будет указано, что установлен интеграционный компонент, но не установлена основная поставка, не забываем, драйвер ККТ двухкомпонентный и нам нужно дополнительно скачать и установить драйвер ККТ от АТОЛ, ниже мы увидим версию интеграционного компонента - 10.6.2.0. Несмотря на довольно свежую версию релиза Розницы интеграционный компонент в ней довольно старый, минимально возможный для работы с современными прошивками ККТ АТОЛ, Возможно это сделано в целях обратной совместимости, не у всех в продаже маркированный товар.

Хорошо, давайте теперь установим основную поставку. Минимально необходимая версия драйвера для работы с маркировкой для тех, кто еще не перешел на ФФД 1,2 - 10.7.0.0, ее и установим. В процессе установки разверните пункт Компоненты интеграции и установите флажок Драйвер 1С, это скопирует архив с новым интеграционным компонентом в папку установки драйверов АТОЛ. Не забывайте, что разрядность драйвера ККТ должна совпадать с разрядностью платформы 1С:Предприятия. Если же вы забыли установить этот флаг, что интеграционные компоненты можно найти в полном архиве драйвера ККТ в папке 1С под наименованием ATOL_KKT_10.zip.

1C-ATOL-driver-update-003.pngТеперь снова вернемся в 1С, если зайти в свойства экземпляра подключаемого оборудования, то может показаться что все хорошо, версия установленного драйвера показана как 10.7.0.0.

1C-ATOL-driver-update-004.pngНо если мы снова откроем справочник Драйверы оборудования, то увидим там что версия драйвера и интеграционного компонента не совпадают, это приведет к тому, что несмотря на актуальный релиз, нужную версию драйвера и прошивки ККТ ваша касса не будет соответствовать требованиям законодательства, так как, по сути, вы продолжите работать с драйвером 10.6.2.0.

1C-ATOL-driver-update-005.png

Почему так? Потому что интеграционного компонента версии 10.7.0.0 в составе конфигурации нет и его нужно установить вручную, для этого воспользуемся функцией Добавить новый драйвер из файла и установим нужный компонент из архива ATOL_KKT_10.zip. Но снова не все так просто, даже после установки нового интеграционного компонента мы увидим. что 1С продолжает использовать старый.

1C-ATOL-driver-update-006.pngПочему так происходит - сказать трудно, скорее всего изначально планировалось иное поведение, но что-то пошло не так. В пользу этого говорит и то, что изредка версия компоненты все-таки становится как надо, но надеяться на это не стоит и следует взять ситуацию в свои руки. Откроем %USERPROFILE%\AppData\Roaming\1C\1cv8\ExtCompT - в этом каталоге 1С хранит интеграционные компоненты, здесь мы можем увидеть библиотеки fptr10_1c обоих версий, следовательно, новый компонент установлен, но в чем же дело?

Список установленных компонентов хранится здесь же, в файле registry.xml, именно отсюда 1С считывает версии библиотек для подключения, здесь мы тоже обнаружим записи для обоих версий. Но, как показывает практика, 1С:Предприятие подключает в таком случае самую младшую версию интеграционного компонента.

1C-ATOL-driver-update-007.pngЧтобы этого избежать, удалите все строки относящиеся к драйверу ККТ АТОЛ кроме самой последней. Выполнять данное действие нужно при закрытой 1С, затем перезапустим приложение и убедимся, что версии драйвера и компонента совпадают:

1C-ATOL-driver-update-008.pngКстати, мы настоятельно рекомендуем для устранения путаницы изменить название загруженного драйвера с АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.Х на АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.7, явно указав версию, для чего - станет понятно чуть позже.

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

1C-ATOL-driver-update-009.pngПосле чего создадим новый экземпляр оборудования с использованием нового драйвера. В процессе создания вам сразу станет понятно, для чего мы рекомендовали переименовать загруженный драйвер, иначе вам пришлось бы угадывать какая из двух абсолютно одинаковых строк относится к старому драйверу, а какая к новому.

Для чего нужно было снимать флаг Устройство используется? Если мы сейчас зайдем в настройки старого экземпляра оборудования, то увидим сообщение, что драйвер не установлен и кнопку с предложением его установить. Это произошло потому, что мы убрали строку для этой версии драйвера из файла registry.xml, наличие или отсутствие библиотеки нужной версии в директории ExtCompT роли не играет. Если вы сейчас нажмете кнопку Установить драйвер, то в указанную директорию будет снова скопирована библиотека нужной версии и добавлена строка в registry.xml, конечно же нажимать ее мы не будем.

1C-ATOL-driver-update-010.pngНо кроме человека переустановить драйвер может и система, обычно это происходит после обновления релиза конфигурации. В этом случае, если флаг использования устройства не снят, в систему снова может быть установлен старый интеграционный компонент и не факт, что вы об этом своевременно узнаете.

Теперь еще раз обновим драйвер ККТ до последнего на момент написания статьи 10.9.0.5, не забываем установить вместе с драйвером интеграционный компонент. Снова переходим в справочник Драйверы оборудования, загружаем новый драйвер и видим уже вполне ожидаемую картину - несовпадение версии драйвера и компонента.

1C-ATOL-driver-update-011.pngНо теперь мы знаем, что делать. Так как драйвер ККТ АТОЛ не предполагает одновременного использования на одном ПК нескольких версий драйверов, то оставляем за правило держать в registry.xml одну единственную запись - для текущей установленной версии. Библиотеки удалять необязательно, их наличие роли не играет.

Как мы только что увидели, ничего сложного в обновлении драйверов ККТ АТОЛ для 1С:Предприятие нет, но нужно знать и учитывать некоторые неочевидные тонкости, которые к тому же практически не документированы и не освещены на профильных ресурсах.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments