Переход розничной торговли на обязательный разрешительный режим работы с маркированной продукцией принес разработчикам и системным администраторам немало технических вызовов. Одной из самых обсуждаемых и сложных тем стало внедрение технологии ТС ПИоТ (Технических средств получения информации о товаре) и использование ЕСМ (Единого Сервисного Модуля) от компании ЕСП в связке с торговыми решениями «1С:Предприятие».
В этой статье мы подробно разберем, как устроена архитектура проверки кодов маркировки, почему возникают критические ошибки интеграции оборудования, как решить проблемы с драйверами кассовых аппаратов АТОЛ и ШТРИХ-М, а также выясним, почему при откладывании чеков в 1С «ломается» возможность их последующей продажи без повторного сканирования.
Для начала проанализируем, как изменилась схема взаимодействия кассового программного обеспечения с системой «Честный Знак». Ранее, до массового внедрения разрешительного режима, кассовая программа напрямую отправляла запросы в систему ГИС МТ (Честный Знак) по протоколу HTTP/HTTPS, используя статический токен авторизации X-API-KEY. Эта схема уходит в прошлое и полностью заменяется архитектурой ТС ПИоТ. Для реализации этого контура в 1С 8 можно использовать механизм разрешительного режима с ТС ПИоТ, онлайн-проверкой и Локальным модулем «Честного знака», рассчитанный на обычные и управляемые формы.
Рассмотрим по шагам обновленный алгоритм авторизации и проверки марки перед ее добавлением в документ продажи:
Ниже приведена упрощенная схема логики обработки маркировки в коде 1С:
// Пример логики обработки и проверки кода маркировки перед добавлением в корзину
Процедура ПроверитьКодМаркировкиПередДобавлением(ТекущийШтрихкод)
// Формируем запрос к локальной службе ЕСМ ТС ПИоТ
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("DataMatrix", ТекущийШтрихкод);
ПараметрыЗапроса.Вставить("Timeout", 1.5); // Ограничение по времени ожидания ответа
РезультатПроверки = МодульИнтеграцииЕСМ.ВыполнитьЗапрос(ПараметрыЗапроса);
Если РезультатПроверки.Статус = "Разрешено" Тогда
// Сохраняем полученный GUID запроса для записи в тег 1265
ИдентификаторЗапроса = РезультатПроверки.GuidЗапроса;
ВремяЗапроса = РезультатПроверки.ВремяЗапроса;
ДобавитьТоварВЧек(ТекущийШтрихкод, ИдентификаторЗапроса, ВремяЗапроса);
Иначе
ВызватьИсключение "Продажа товара запрещена системой разрешительного режима!";
КонецЕсли;
КонецПроцедуры
---
Многие технические специалисты сталкиваются с ситуацией, когда после настройки интеграции ККТ с ЕСМ в программе 1С начинает периодически или постоянно всплывать ошибка: «При печати чека произошла ошибка. Контрольная марка не проверена. Используемый драйвер оборудования не сертифицирован или снят с поддержки».
Выясним истинную причину этого поведения. Проблема заключается в том, что для корректной работы ЕСМ (в частности, для интеграции с кассами марки АТОЛ) требуются специализированные сборки драйверов (например, из ветки 10.10.8.x), которые поставляются компанией ЕСП. Эти сборки содержат модифицированные библиотеки интеграции, которые перехватывают функции стандартной компоненты 1С для работы с ККТ.
Когда платформа 1С загружает такую стороннюю библиотеку, встроенный механизм валидации БПО (Библиотеки подключаемого оборудования) сверяет контрольные суммы и версию компоненты со списком официально сертифицированных драйверов. Не найдя модифицированную сборку в реестре одобренных, 1С блокирует ее работу или выдает предупреждение безопасности. Если вместо самостоятельной связки нужен готовый контур работы ККТ, можно рассмотреть обработки подключения онлайн-касс с поддержкой ТС ПИоТ, Локального модуля, ФФД 1.2 и разрешительного режима для поддерживаемых моделей АТОЛ, ШТРИХ-М и VIKI.
Способы решения проблемы:
10.10.8.24 часто вызывают сбои в работе стандартной утилиты «Тест драйвера ККТ» (блокируется часть штатных функций проверки марок, так как ЕСМ перехватывает управление портами). В качестве более стабильной альтернативы рекомендуется использовать версию 10.10.8.23 или временно откатиться на штатный сертифицированный драйвер из дистрибутива БПО 1С, предварительно убедившись, что его версия поддерживает работу с ТС ПИоТ вашей модификации.---
Еще один серьезный кошмар для автоматизаторов розничной торговли — невозможность полноценно работать с механизмом откладывания чеков. Если кассир откладывает чек, в котором присутствуют маркированные товары, то при его последующем открытии и попытке пробития касса выдает ошибку о невозможности проверки марки.
Давайте разберем техническую изнанку этой проблемы. При первичном сканировании товара сканером штрихкодов считывается полный код формата DataMatrix, состоящий из кода идентификации (GTIN + серийный номер) и так называемого «криптохвоста» (кода проверки). Полный код маркировки необходим модулю ЕСМ для формирования запроса проверки и последующей передачи данных в ФН.
Однако по требованиям информационной безопасности ГИС МТ и внутренним стандартам хранения конфиденциальных данных в системах «1С», полный код маркировки с криптохвостом запрещено сохранять в открытом виде в промежуточных базах данных (в табличных частях отложенных документов, чеков ККМ и т.д.). Это сделано для исключения возможности компрометации марок и их кражи недобросовестными сотрудниками.
В результате при откладывании чека происходит следующее:
// Схематичный разбор процесса откладывания чека в кассовом ПО
Процедура ОтложитьТекущийЧек(ДокументЧек)
Для Каждого Строка Из ДокументЧек.Товары Цикл
Если Строка.МаркированныйТовар Тогда
// Архитектурное ограничение:
// Полный DataMatrix очищается, криптохвост отрезается
Строка.КодМаркировкиДляХранения = ПолучитьОчищенныйКод(Строка.ПолныйКодМаркировки);
Строка.Криптохвост = Неопределено; // Данные стерты из соображений безопасности
КонецЕсли;
КонецЦикла;
СохранитьДокументВБазе(ДокументЧек);
КонецПроцедуры
Когда кассир повторно открывает отложенный чек для пробития, кассовая программа обнаруживает, что у нее есть только очищенная часть марки. Без полноценного «криптохвоста» модуль ТС ПИоТ физически не может выполнить повторную авторизацию запроса и подписать его через ФН. Как итог — система требует выполнить повторное физическое сканирование всех маркированных товаров в чеке.
Как с этим работать на практике? К сожалению, обойти это ограничение программным путем без нарушения требований безопасности невозможно. Необходимо донести до персонала и руководства торговых точек простое правило: маркированный товар нельзя отпускать клиенту до фактического пробития фискального чека. Откладывание чеков с маркировкой должно быть сведено к минимуму, а кассиры должны быть готовы к тому, что при восстановлении отложенного чека марки придется сканировать заново.
---
Рассмотрим подробнее логику формирования фискальных признаков при различных режимах работы кассы. Существует распространенное заблуждение, что результаты проверки разрешительного режима печатаются непосредственно на бумажном чеке в виде символов [M], [M+] или [M-].
Проанализируем ситуацию:
Когда кассовая программа обращается к ЕСМ, возможны два сценария заполнения тега 1265:
Настроив корректное взаимодействие 1С, драйверов ККТ (желательно 32-битных версий) и модуля ЕСМ с активированной службой Локального Модуля, вы обеспечите стабильную и бесперебойную работу розничного магазина в любых сетевых условиях. Для практической настройки кассового места на УТ 11.5 с АТОЛ можно использовать инструкцию по настройке РМК, Локального модуля и ТС ПИоТ.