При переходе на поштучный учет алкогольной продукции многие предприятия столкнулись с необходимостью адаптации терминалов сбора данных (ТСД) под новые форматы штрихкодов. В старых версиях ЕГАИС процесс учета требовал последовательного сканирования штрихкода товара (EAN-13), акцизной марки старого образца (длиной 68 символов в формате PDF-417) и двумерного кода DataMatrix. С введением новых акцизных марок длиной 150 символов необходимость в дополнительном сканировании DataMatrix отпала, так как вся необходимая информация уже зашита в саму марку.
Разработчики платформы Mobile SMARTS (Клеверенс) часто предлагают решить эту проблему путем приобретения новых лицензий и перехода на обновленные конфигурации, например, «Mobile SMARTS: ЕГАИС 3». Однако для многих компаний это связано со значительными финансовыми затратами на покупку лицензий и перенастройку интеграции. В этой статье мы подробно разберем, как силами штатного 1С-программиста доработать существующую кастомизированную конфигурацию Mobile SMARTS и связать ее с базой 1С без лишних затрат.
Для начала проанализируем, как устроена логика работы мобильного терминала на платформе Mobile SMARTS. Любая конфигурация Клеверенс представляет собой структурированное дерево визуальных и невизуальных действий (шагов), которые выполняются ТСД последовательно. Все данные, полученные в процессе выполнения шагов (сканирование, ввод количества, выбор склада), временно сохраняются в переменных сессии.
Для внесения изменений нам понадобятся следующие инструменты:
Выясним, какими путями можно реализовать требуемый бизнес-процесс сканирования:
Рассмотрим два технических варианта реализации этой логики непосредственно в Панели управления Клеверенс.
Этот вариант является наиболее наглядным и структурированным, так как он явно разделяет ветвление процесса в дереве конфигурации.
Разберем настройку по шагам:
SelectedBarcode или свойство текущей строки CurrentLine.Barcode.Condition).SelectedBarcode.Length == 150
{SelectedBarcode.Length} == 150
Этот способ позволяет обойтись без добавления новых блоков ветвления в дерево конфигурации. Мы можем управлять доступностью самого экрана сканирования DataMatrix.
Проанализируем этот метод:
{SelectedBarcode.Length} != 150
{SelectedBarcode.Length} < 150При доработке логики на ТСД мы можем столкнуться с тем, что мобильное приложение при сканировании новой марки на 150 символов будет выдавать ошибку: «Неизвестный штрихкод» или «Штрихкод не соответствует шаблону».
Выясним причину этой проблемы. В Mobile SMARTS за обработку сканирования отвечают жестко заданные «Шаблоны штрихкодов». Если регулярное выражение шаблона не описывает структуру новой марки, ТСД просто откажется принимать этот штрихкод в работу.
Для решения этой проблемы выполним следующие действия:
^[0-9A-Z]{68}$), его необходимо модифицировать или добавить новое правило для поддержки длины 150 символов:
^[0-9a-zA-Z]{150}$Настройка логики на самом ТСД — это лишь половина задачи. Самая важная часть работы для 1С-программиста заключается в адаптации принимающего кода в информационной базе 1С. В типовых интеграциях Клеверенс и 1С обмен данными строится на обработках обслуживания, которые разбирают выгруженные с ТСД файлы документов.
Рассмотрим, с какими сложностями мы столкнемся в 1С и как их решить:
1. Структура данных марки. В старых марках (68 символов) и новых (150 символов) структура данных кардинально отличается. В новой марке на 150 символов уже зашиты серия и номер марки, которые раньше приходилось извлекать из DataMatrix. Нам необходимо научить 1С правильно парсить пришедшую строку.
2. Проверка заполнения реквизитов. Скорее всего, код проведения или записи документа ЕГАИС в вашей 1С (например, в модулях интеграции с ЕГАИС) проверяет обязательное заполнение обоих реквизитов: и марки PDF-417, и штрихкода DataMatrix. Если загрузить документ, где у части строк (новых марок) поле DataMatrix будет пустым, система выдаст ошибку.
Посмотрим на пример кода в модуле загрузки Клеверенс (обработка обслуживания). Нам нужно найти место, где происходит разбор строк документа, полученного от ТСД, и модифицировать алгоритм заполнения реквизитов.
Проанализируем пример кода на языке 1С:
// Процедура обработки строки загружаемого из ТСД документа
Процедура ОбработатьСтрокуЗагрузки(СтрокаДокументаТCД, СтрокаЕГАИС1С)
МаркаPDF417 = СтрокаДокументаТCД.Barcode;
ДлинаМарки = СтрДлина(МаркаPDF417);
Если ДлинаМарки = 150 Тогда
// Это новая марка. Извлекаем данные напрямую из нее
СтрокаЕГАИС1С.АкцизнаяМарка = МаркаPDF417;
// Для новых марок поле DataMatrix не заполняем, либо пишем в него служебный признак
СтрокаЕГАИС1С.КодDataMatrix = "";
// Парсим серию и номер из 150-символьной марки
// Согласно структуре новой марки, серия и номер находятся на определенных позициях
СтрокаЕГАИС1С.СерияМарки = Сред(МаркаPDF417, 1, 3); // Пример разбора (позиции зависят от формата)
СтрокаЕГАИС1С.НомерМарки = Сред(МаркаPDF417, 4, 9);
ИначеЕсли ДлинаМарки = 68 Тогда
// Это старая марка, для нее DataMatrix обязателен
СтрокаЕГАИС1С.АкцизнаяМарка = МаркаPDF417;
СтрокаЕГАИС1С.КодDataMatrix = СтрокаДокументаТCД.DataMatrix; // Считанный ТСД код
// Обычный разбор старой марки
СтрокаЕГАИС1С.СерияМарки = Сред(МаркаPDF417, 1, 5);
СтрокаЕГАИС1С.НомерМарки = Сред(МаркаPDF417, 6, 8);
Иначе
ВызватьИсключение "Некорректный формат акцизной марки: " + МаркаPDF417;
КонецЕсли;
КонецПроцедуры
Также важно проверить в 1С модуль проведения документа ЕГАИС (например, «ТТН Входящая ЕГАИС» или «Акт списания ЕГАИС»). Найдем функции проверки заполнения помарочной продукции. Нам необходимо отключить обязательное требование наличия DataMatrix для записей, у которых длина марки равна 150 символам.
Рассмотрим пример функции валидации перед отправкой данных в ЕГАИС:
Функция ПроверитьЗаполнениеПоштучногоАлкоголя(ТабличнаяЧастьТовары) Экспорт
Для Каждого СтрокаТЧ Из ТабличнаяЧастьТовары Цикл
ДлинаМарки = СтрДлина(СтрокаТЧ.АкцизнаяМарка);
Если ДлинаМарки = 68 И ПустаяСтрока(СтрокаТЧ.КодDataMatrix) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
"Для старой марки " + СтрокаТЧ.АкцизнаяМарка + " обязательно заполнение DataMatrix!"
);
Возврат Ложь;
КонецЕсли;
// Для марки длиной 150 символов отсутствие DataMatrix является корректным состоянием
КонецЦикла;
Возврат Истина;
КонецФункции
После внесения изменений в конфигурацию Mobile SMARTS и доработки модулей интеграции в 1С необходимо провести комплексное тестирование:
Таким образом, решив задачу последовательно на уровне конфигуратора Mobile SMARTS и принимающего кода 1С, мы получаем полностью рабочий бизнес-процесс под новые требования ЕГАИС без необходимости переплаты за новые лицензии и коробочные обновления Клеверенс.