Вы находитесь на странице: 1из 19

Все потоки Разработка Администрирование Дизайн Менеджмент Маркетинг Научпоп Войти Регистрация

13,58
Рейтинг

Клеверенс
Компания

cleverence 28 августа 2020 в 18:13

Марк маркировал, маркировал, да и вымаркировал.


Маркировка — это ж просто!?
Блог компании Клеверенс, Тестирование IT-систем, Разработка мобильных приложений, Разработка для интернета вещей, Бизнес-модели

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

Систему часто критиковали и критикуют, в основном из-за частых изменений API, багов личного кабинета и белых пятен в
некоторых процессах.

Мы решили, пусть и не первыми, опубликовать свой опыт и свои мысли об этом новом амбициозном проекте государства, в
котором мы активно участвуем.

Может показаться, что статья — каша, но маркировка в целом такая каша и есть, очень много аспектов сходятся в одном месте.

Кратко о нас

Клеверенс занимаемся софтом для мобильных работников, в основном под специальное оборудование терминалов сбора
данных (ТСД) и регистраторов выбытия (РВ).
Кому-то может показаться, что вот есть лес, в лесу дерево, на дереве жук, а на жуке живет микроб, и ниша софта для ТСД — это
про микробов на жуке.

На это можно ответить, что мобильность персонала — очень крупный растущий рынок, а специальное железо с готовым софтом
— это вообще будущее всего текущего железа. В конце концов, любая реально прорывная штука — это результат многих лет
труда в узкой нише (см. известное интервью Андрея Дороничева про мобильный YouTube).

В основном продукты Клеверенс продаются с уже готовой интеграцией с учетными системами, которые (интеграции) мы сами
же пишем и поддерживаем (например, Склад 15).

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

Что такое система маркировки и «Честный знак»

Грубо говоря, это государственно-частный интернет вещей на штрихкодах и RFID для тотального прослеживания движения
единиц товаров.

По системе маркировки существует очень много информации, главным ресурсом является сайт «Честный знак».

Отношение участников рынка к маркировке

Не секрет, что отношение участников рынка к маркировке полярное. От “Россия, вперед!” и “Идея хорошая, но реализация
подкачала” до “опять маленьких обижают”.

Из плюсов называется обеление рынка и контроль цепочек поставок. Из минусов — снятие с ЕНВД при торговле
маркированным товаром.

Практически весь крупный бизнес за маркировку. Мелкие предприниматели, которые хотят работать красиво и в белую — тоже
за маркировку, для них это конкурентное преимущество перед серыми рынками.

Против маркировки в основном малый и средний бизнес, который считает всё это лишней нагрузкой для себя.

Претензии в основном формулируются как “снова душат малый бизнес” или “у вас столько денег и людей, могли бы сразу
сделать то-то и то-то”, “бизнес-процесс такой-то не продуман”. Хотя именно на малый бизнес и его процессы были потрачены
основные деньги — это сайт с личным кабинетом участника, облачный регистратор эмиссии кодов и т.п.

Отдельно стоит позиция айтишников, о ней ниже.

При этом информационный портал «Честного знака», на котором публикуется информация, сделан просто отлично. Например,
где найти информацию на английском языке? Вот тут. А на китайском? Вот тут.
Проблемы на старте, о которых все говорили

Пока шел пилот, в системе было много багов. В основном их успели излечить до 1 июля 2020.

Обещали, что на старте будет работать лучше ЕГАИСа, и в целом правда доступность сервиса выше.

Сейчас в табаке и обуви система всегда доступна, всё отрабатывает быстро, кроме редкого выключения на технологические
работы вечером на пару часов.

Но ключевая проблема на старте была в том, что “не запрягши не поедешь”, а 99% числа участников оборота (по количеству)
тупо игнорировали эту систему, не регистрировались, не давали нагрузку, ждали судного дня, а потом требовали переноса
сроков.

Еще летом 2019 года мы тестировали нагрузку в нашей «Кировке» и смотрели, как маркировка отреагирует на заказ и
выпуск 10 млн кодов, единоразово (сейчас уже так делать нельзя). Процесс занял меньше 10 минут.

Но тогда в системе было зарегистрировано крайне мало участников, и было видно, что народ начнет шевелиться чуть ли не
в самый последний день.

Об этой проблеме все знали, к ней готовились, но когда подошел дедлайн по обуви, всё равно случился коллапс. Некоторые
УОТы кинулись выписывать себе бесплатные коды на остатки на 20 лет вперед, это в пике дало увеличение нагрузки на сервера
в х40 раз. Такие игрища, конечно, даром не пройдут, потому что система цифровая и, что называется, “все ходы записаны”.

К сожалению, пострадали и пионеры маркировки — это те компании, которые с первого дня были в пилоте маркировки,
добросовестно старались, но в конце тоже просили о переносе сроков.

Тут надо сказать, что государственная система — это не айфончик, чтобы с первого дня продаж вызывать восторги. И цель её
создания была не в том, чтобы собирать лайки от айтишников или снимать видео-обзоры по типу “вот когда выйдет, тогда и
посмотрю, решу для себя, надо ли покупать”.

Почему-то люди ждут, что с первого дня система будет работать так, как будто ей уже 5 лет в продуктиве.

Вообще, если ждать по такой логике, когда всё будет идеально, то надо всё переносить на 2030й, а лучше на после покорения
Марса, ага.

Позиция айтишников
Позиция айтишников не “за” и не “против”, а “дайте”. Требуют заранее анонсировать все изменения, требуют лучшей
документации, больше тестовых примеров, песочниц, меньше ограничений.

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

Айтишники — очень въедливые и умные люди, со своим мнением по любому вопросу. И никакого единого мнения по поводу
маркировки, кроме претензий по работе API, в общем-то нет.

API системы меняется чаще, чем этого хотелось бы для сценария “сделал и забыл”. Но при этом считается, что в API надо
надобавлять еще кучу методов для работы с групповыми упаковками (агрегатами), для упрощенной авторизации и т.п., но это
опять означает изменение API.

Мы сами айтишники, и у нас такая же двойная позиция, что в API не хватает методов, но при этом API меняется слишком часто.
Тут, как говорится, “флаг расистский, но это наша история”.

В общем, API улучшать надо, но желательно предупреждать об этом за 1-2 месяца и давать людям время на внесение
изменений в свои системы. А то было время, когда на боевом контуре табачной маркировки стояла более новая версия
API, чем в тестовом контуре.

Технические аспекты маркировки

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

• Сисадминские вопросы с УКЭП, которые были и будут до тех пор, пока есть фрагментация по версиям операционных систем
и браузеров

• Кодерские вопросы, которые нельзя решить путем гугления на StackOverflow, потому что система новая и уникальная,
несмотря на использование открытого ПО

• Внедренческие вопросы, когда люди пользуют “online barcode generator” или “сканер в разрыв клавиатуры”, а потом
удивляются, почему вышла ерунда

Посмотрите, тут и Java, и Reactive (RxJava), и Spring и даже Netflix:


Чтобы составить собственное мнение можно почитать техночат в телеге.

Авторизация

Авторизация в ИС МП происходит в 2 этапа.

Сначала нужно запросить некий псевдослучайный “ключ”, который нужно подписать и отправить на урл “/api/v3/auth/cert/“
(причем на момент написания этого материала в конце url обязательно должен был стоять слэш “/“, иначе не работало, что
выглядит странно).

Получение “ключа” происходит так (нужно подставить нужный хост, их много разных, в зависимости от того, песочница это или
боевой, одежда или что-то другое):

// получаем на /api/v3/auth/cert/key “ключ” и данные, необходимые для авторизации


var uri1 = new Uri("<нужный хост>/api/v3/auth/cert/key")
var randomDataResponse = REST.Invoke<RandomDataResponse>(uri1, "GET", timeout);

Затем нужно подписать этот псевдослучайный “ключ” при помощи выбранного КЭП и отправить в ГИС МТ, чтобы получить в
ответ авторизационный токен.

Для этого ищем сертификат КЭП по выбранному пользователем отпечатку (certificateThumb). Сертификат находится в данном
случае в “Личных” локальной машины. Также контекст сертификата должен быть связан с хранилищем ключевой пары (такие
сертификаты отмечены иконкой ключика в списке сертификатов в оснастке windows):
Получение сертификата в коде для формирования подписи:

X509Certificate2 cert = null;


using(store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
cert = from c in store.Certificates where string.Compare(c.Thumbprint, certificateThumb, true) == 0 select c;
}

Подписываем таким образом:

// данные для подписи


var content = new ContentInfo(randomDataResponse.Data);
var signedCms = new SignedCms(content, false);

// настраиваем сертификат для подлиси, добавляем дату


var signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, cert);
signer.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));

// формируем подпись
signedCms.ComputeSignature(signer, false);
var sign = signedCms.Encode();

Подписанное CMS-сообщение (sign) — это и есть та проверочная подпись, которую нужно отправить для авторизации,
предварительно преобразовав в формат Base64.

var tokenRequest = new TokenRequest();


tokenRequest.UUID = randomDataResponse.UUID;
tokenRequest.Data = Convert.ToBase64String(sign);

// получаем токен на /api/v3/auth/cert/


var uri2 = new Uri("<нужный хост>/api/v3/auth/cert/")
var tokenResponse = REST.Invoke<TokenResponse>(uri2, "POST", tokenRequest);

В ответ приходит JWT токен, закодированный в Base64.

К слову, отправляемые документы в дальнейшем подписываются таким же образом, только формируется так называемая
“открепленная” подпись:

var signedCms = new SignedCms(content, true);

Вспомогательные классы (со схемой, идентичной XSD-схемам документов из API):

/// <summary>
/// Ответ на запрос GET /api/v3/auth/cert/key для авторизации.
/// </summary>
public class RandomDataResponse
{
/// <summary>
/// уникальный идентификатор сгенерированных случайных данных, тип string
/// </summary>
[Newtonsoft.Json.JsonProperty(PropertyName = "uuid")]
public string UUID { get; set; }

/// <summary>
/// случайная строка, тип string
/// </summary>
[Newtonsoft.Json.JsonProperty(PropertyName = "data")]
public string Data { get; set; }
}

/// <summary>
/// Данные для запроса авторизационного токена.
/// POST /api/v3/auth/cert/
/// </summary>
public class TokenRequest
{
/// <summary>
/// uuid - уникальный идентификатор подписанных данных из /api/v3/auth/cert/key
/// </summary>
[Newtonsoft.Json.JsonProperty(PropertyName = "uuid")]
public string UUID { get; set; }

/// <summary>
/// подписанные УКЭП зарегистрированного участника случайные данные в base64
/// </summary>
[Newtonsoft.Json.JsonProperty(PropertyName = "data")]
public string Data { get; set; }
}

/// <summary>
/// Ответ на запрос авторизационного токена.
/// POST /api/v3/auth/cert/
/// </summary>
public class TokenResponse
{
/// <summary>
/// Авторизационный токен в base64-строке
/// </summary>
[Newtonsoft.Json.JsonProperty(PropertyName = "token")]
public string EncodedTokenBase64 { get; set; }
}

Если вам удалось авторизоваться — вы прошли небольшой квест.

Проблемы с генерацией и чтением штрихкодов

Система маркировки построена на международных стандартах, за исключением части с криптографией. Это отлично и достойно
похвалы.

К сожалению, средний айтишник никаких стандартов не читает, ни про что не изучает, а сразу лепит свои велосипеды из
бесплатных компонентов про генерацию штрихкодов, печать, бизнес-процессы и т.п.
Первая же трудность — распечатать штрихкод маркировки в своём дизайне. Из коробки “Честный знак” предоставляет
бесплатный инструмент, но с ним никто, конечно, разбираться не стал, ведь есть “online barcode generator” и встроенные
редакторы отчетов в 1С/SAP/NAV/DAX.

Засада в том, что современный штрихкод — это не просто графическое представление символов (об этом у нас выйдет
отдельная статья). Поэтому сразу всплыли проблемы префиксов, разделителей, кодировок, обязательных непечатемых символов
и прочее такое, про что никто знать не знал и разбираться не хотел.

Пример со спецсимволом GS (ASCII 29)

Пример со спецсимволом FNC1 (ASCII 232)


Скриншоты сделаны из приложения «Чекмарк».

Вот кусок исходного кода «Чекмарка», который выполняет разбор штрихкода, отсканированного камерой и разобранного нашей
платформой:

var km = BarcodeData.GS1;
if (km.Contains("01") && km.Contains("21"))
{
if ((km.Contains("17") || km.Contains("7003")) && !km.Contains("10"))
{
ПризнакМолока = true;

if ((km.GetValue("01").Length == 14) && (km.GetValue("21").Length == 7 ||


km.GetValue("21").Length == 13) && (km.GetValue("17").Length == 6 ||
km.Getvalue("7003").Length == 10) && (km.GetValue("93").Length == 4))
{
ЭтоМолоко = true;
MSG2 = "Является KM ЧЗ молочной продукции.";
if (km.GetValue("21").Length == 7)
MSG2 = "Является КМ ЧЗ групповой упаковки молочной продукции.";
}
else
{
// Проверка наличия группы в коллекции для отображения (EntriesRows)
// В случае отсутствия - добавляем группу с пустым содержимым
EntriesRows = ПоискАI(EntriesRows, Al = 93, BarcodeData);
MSG2Error = "Не является КМ Ч3! Имеет признаки КМ молочной продукции.";
Msg = "<b>#N005</b>" + Msg;
}
}
else if (km.Contains("8005") || km.Contains("93"))
{
ПризнакТабачногоБлока = true;

if (km.GetValue("01").Length == 14 && km.GetValue("21").Length == 7 &&


km.GetValue("8005").Length == 6 && km.GetValue("93").Length == 4)
{
ЭтоТабачныйБлок = true;
MSG2 = "Является КМ ЧЗ табачного блока.";
}
else
{
EntriesRows = ПоискАI(EntriesRows, AI = 8005, BarcodeData)
EntriesRows = ПоискАI(EntriesRows, Al = 93, BarcodeData)
MSG2Error = "Не является КМ Ч3! Имеет признаки КМ табачного блока.";
Msg = "<b>#N004</b>" + Мsg;
}
}
else if (km.Contains("92") && km.Contains("92").Length > 66)
{
ПризнакОбуви = true;
if (km.GetValue("01").Length == 14 && km.GetValue("21").Length == 13 &&
km.GetValue("91").Length == 4 && km.GetValue("92").Length == 88)
{
... (и т.п.) ...

Откуда взялись спецсимволы? Из стандарта. «Честный знак» сделали всё по стандарту, и участникам оборота товаров тоже надо
было читать стандарт.

КСТАТИ: Проверку корректности содержимого DataMatrix можно произвести только с помощью сканирования камерой (даже
если сканировать с ТСД, нужен доступ к камере). Потому что все сканеры штрихкодов в соответствии со стандартном не должны
возвращать 1в1 то, что они считали, как минимум должны выбрасывать первый символ FNC1. В целом, сканеры могут добавлять
или убирать важные символы штрихкода при сканировании, переставлять блоки местами, в зависимости от настроек, всё это
мешает проверке.

Т.к. системная интеграция — это не про программы, а про людей и про то, как они пишут и читают спецификации, то наличие
этих спец символов сразу привело к некоторому разногласию при обмене штрихкодами.

Например, могли, особо не вчитываясь в спецификации, добавлять в штрихкод строку из 4 символов “FNC1” вместо одного
символа ASCII 232 (FNC1). А еще, при обмене между подсистемами такие символы часто фильтруются и теряются, до печати
доходят уже без таких символов, при этом в обычных текстовых редакторах спец. символы часто не отображаются и люди
удивляются, почему же что-то не так, если штрихкоды совпадают.

Так же, если не указывать символ FNC1 в штрихкоде, некоторое оборудование или ПО может не понять что это такое и как его
разбирать, т.к. этот символ вначале штрихкода как раз указывает на то, что это формат GS1 DataMatrix.

Один из последних примеров, на котором споткнулись почти все, было появление скобок и знаков препинания в серийном
номере.

Откуда в серийном номере скобки и знаки препинания? Из стандарта! Стандарт GS1 позволяет их использовать. Т.к. серийный
номер в длину имеет всего 13 символов, а товаров под маркировку очень много, приходится использовать все доступные
символы.

Отдельные лулзы — скобки в серийном номере. Они там разрешены стандартом, но никто их не ждал. В так называемой
человеко-читаемой форме представления (HID) скобки имеют специальный смысл: они обрамляют номера значимых групп
символов. Например, “(21)” означает, что дальше в строке будет идти серийный номер.

Если наивно думать, что в штрихкоде хранится просто строка символов, то в строке “(21)abcd12(3)d(1,(91)” серийным номером
видится “abcd12”, а часть про “(1,” кажется вообще ошибкой.

На самом деле серийный номер тут “abcd12(3)d(1,”, а после запятой стоит нечитаемый символ GS. И дело не в том, что серийный
номер должен быть 13 символов (потому что формально длина серийника в GS1 DataMatrix может быть другой, и в шинах,
например, она бывает 20 символов). Дело именно в невидимом GS, который надо учитывать, и который в полях любой учетной
системы не выводится, не принимается для ввода и вообще запрещен (и в обычном Блокноте его тоже не видно, не выводится,
нужен Notepad++).

Наличие таких спец символов накладывает ограничение на передачу и хранение данных штрихкодов, их нужно экранировать
или кодировать, например в Base64.

КСТАТИ: существует стандарт на хранение и передачу таких штрихкодов в виде строки (ISO/IEC 15424-2018), но почему-то им
никто не пользуется. Данные штрихкода GS1 DataMatrix, хранимые в виде строки, должны начинаться на “]d2”.

Сейчас почти все исправили свои компоненты печати штрихкодов (наверное). Но кто вообще читает стандарты, правда?

На проверку, домашнее задание: вот эта тема, что если поле фиксированной длины, то GS вставлять не нужно, а если длина
переменная, и значение поля не максимальной длины, то вставлять нужно. На самом деле это правило работает не так.
Спецсимвол GS не вставляется только если AI начинается с пары цифр из этой вот таблицы:
А во всех остальных случаях вставляется. Ваш код генерации/разбора ШК работает так же?

Еще одна проблема — сканирование штрихкода маркировки ламерскими средствами типа “сканер в разрыв клавиатуры”. До
маркировки самой большой проблемой было, что где-то обрезается или вставляется лишний ноль. Со введением новых кодов
маркировки лулзы со сканированием выведены на совершенно новый уровень.

Зачастую это не проблемы самого сканера или его настроек, а проблемы с отсутствием опыта и понимаем принципов
штрихкодирования.

Например, при подключении сканера «в разрыв клавиатуры» (или при эмуляции такого режима), а также при подключении
сканера как HID-устройства, возможны проблемы с заменой одних символов в считанном штрихкоде на другие или пропадание
определенных символов.
Схема подключения сканера в разрыв клавиатуры

При работе в указанных режимах сканер передаёт компьютеру не сами символы из штрихкода (sic!), а коды нажатий клавиш
клавиатуры, которые нужно было бы нажать, чтобы набрать на клавиатуре символы из этого штрихкода.

При этом очевидно, что одной клавише клавиатуры может соответствовать сразу несколько возможных символов, в
зависимости от языка раскладки и нажатий клавиш-модификаторов (Shift, Caps Lock, Alt и Ctrl).

Например, при нажатии на вот эту клавишу в нижней правой части клавиатуры:

Результатом может быть любой из символов ‘?’, ‘/’, ‘,’ или ‘.’, в зависимости от выбранной раскладки и использования клавиш-
модификаторов. Какой конкретный введётся символ — определяется настройками клавиатуры операционной системы, а не
сканером.

Именно из-за этого вместо одних серийников на кассе выбывают совершенно другие, либо код вообще “не найден”.

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

Очевидно, тут понадеялись на то, что DataMatrix самопроверяемый, плюс есть криптохвост. Но одно дело весь штрихкод,
самопроверяемый, и другое дело огрызок кода с серийником, который вообще могли ввести с клавиатуры.

Отдельные споры айтишников вызвал так называемый «криптохвост».

«Криптохвост» — это необходимая часть штрихкода маркировки, благодаря которой можно по симметричному ключу
проверить, что серийный номер единицы товара не высосан из пальца.
Криптохвост есть только в штрихкоде и не хранится в базе маркировки, чтобы никакой хакер не мог подломить базу и печатать
чужие штрихкоды.

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

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

Криптохвост призван решить эту проблему, но пока (на лето 2020 года) не заработал в полную силу.

Дело в том, что криптография российская и привязана к железкам. Но альтернативы российской крипте всё равно нет,
государственная российская система не может использовать иностранную крипту, это будет дыра. Поэтому придется терпеть
российскую, это разумно и не сложно.

Вообще криптография — тема очень сложная. Информации много и очень тяжело найти описание того, как нужно
подписать или зашифровать данные в конкретном случае.

С этим столкнулись все, кто попробовал интегрироваться с API маркировки. Было очень много вопросов в чатах типа “Почему не
авторизуется?”, “Как подписать?”, “Поделитесь примером!”, “Подпись сформировали но приходит отказ, почему?” и много других.

Чаще всего ошибки были банальны. Например, после подписи изменяли данные, либо терялся пробел или как-то
несущественный символ, но для подписи это критично, и после отправки в API приходил отказ без объяснений, т.к. подпись не
проходила проверку.

К счастью в чатах чаще всего помогали и отвечали на такие вопросы. В целом, все эти проблемы лечатся или уже были излечены
к 1 июля 2020.

В части “Честного знака” к 1му июля 2020 весь процесс от производства товара до его выбытия через кассу или доставку
интернет-магазина был продуман, расписан, протестирован и запущен в боевом контуре. Например, у нас есть видеоролик
такого сквозного процесса для молочной продукции.

Что мы сами думаем о маркировке

Мы в Клеверенсе думаем, что софтовые проблемы не главное. Хуже то, что участники оборота товаров до сих пор не понимают
сути изменений. Это гораздо большая проблема, чем софтверные баги.

Люди относятся к маркировке как к еще одному бухгалтерскому отчету, который можно составлять сидя у компа в
1С/SAP/NAV/DAX, корректировать, менять задним числом и т.п. Типа пользоваться будут бухгалтеры и логисты, а айтишники
должны “запилить” под это нужные модули и обработки.

Главный запрос наших клиентов в том, чтобы склад/китайцы/тетямаша что-то насканировали, а потом это “корректно”
загрузилось в 1С/SAP/NAV/DAX. И мы это успешно делаем.

Но это очевидная ошибка, которая вскроется, когда компании начнут сводить остатки друг с другом, а государство начнет
штрафовать.

Что такое на самом деле система маркировки

Маркировка товаров — это система отражения реальных движений.

Реальные проблемы с маркировкой

Это чисто наше IMHO.

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

Во-первых, реальный учет движений противоречит текущим принципам учета по всей цепочке, когда всё учитывается по SKU,
по партии или по среднему. Задним числом сводить и исправлять — наше всё.

Учетная система в любой компании — представляет собой причесанную и исправленную сказку о том, как всё здорово
получилось после 100500 созвонов, исправлений, перепроведений и вычищения ошибок.

На одной из расширенных встреч у крупного иностранного дистрибутора лекарств только после часа обсуждения главный
логист, наконец, округлил глаза и сказал “это что же, разные штрихкоды у каждой пачки?”. А слова “уникальный”, “серийный
номер”, “каждый экземпляр”, “всё сканировать” и т.п., видимо, пролетели мимо.

Во-вторых, реальный учет движений противоречит текущим бизнес-практикам и принципам разделения ответственности.

Даже если компания крупная и у сотрудника нет прав на правку каких-то документов — есть телефон, можно позвонить или
написать тому, кто может поправить.

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

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

Сверх того, правила расчета себестоимости или учета движений в учетной системе основаны на усреднениях и упрощениях типа
FIFO/LIFO и средней цены. И те принципы учета, которые повсеместно десятилетиями применяются от производства до розницы,
основаны на этих упрощениях и идут в разрез с реальным прослеживаем уникальных единиц.

Из-за этого на практике получается, например, что в систему маркировки товары отправляются по FIFO/LIFO, а реально
отгружается то, что стояло ближе в выходу.

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

Еще одна проблема — это попытка “натянуть сову на глобус” и втащить коды маркировки во все стандартные документы ERP,
чтобы там их видел бухгалтер, логист или ответственный менеджер.

Хотя смотреть ему на них не за чем, сделать он с ними ничего не может.

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

Это тоже решается инструментами для низового персонала с доступом ко всей нужной информации.

Ну т.е. это не технические проблемы каких-то систем, которые в целом к 1 июля 2020 уже были исправлены, а вопросы
перестройки работы компаний на новые рельсы.
Выводы

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

«Прилив поднимает все лодки», и переход всего рынка на общие рельсы дает большой синергетический эффект.

Всем удачной автоматизации!

Теги: маркировка, взгляд изнутри, государство и интернет, мобильная автоматизация

Хабы: Блог компании Клеверенс, Тестирование IT-систем, Разработка мобильных приложений, Разработка для интернета вещей, Бизнес-модели

+3 24 2,6k 19 Поделиться

Клеверенс
Компания

2,0 2,4
Карма Рейтинг

@ cleverence
Пользователь

Сайт

Комментарии 19

mixsture 28 августа 2020 в 20:57 +2

Так до сих пор компании до конца еще не поняли, насколько им нужно учет менять. В абсолютном большинстве знакомых компаний
учет кодов маркировки — внешний, независимый от основного складского учета. А это значит, что через год расхождения со складским
станут явными и частыми. Так что ждем через год массу вопросов на форумах «почему у меня по данным ЧЗ этих кодов +100, а этих -
100? и как найти ошибку, у меня ж 10 фирм жонглировали этими кодами, передавая их друг другу?».

Vasiliy_S 29 августа 2020 в 08:51 0

Работаю на складе табачки. При перемещении товара между своими складами никто не сканирует Маркировку. Только при отгрузке
сетям-покупателям.
При этом, сканирование Маркировки не имеет никакого отношения к складскому учету. Это просто доп обработка, чтобы отправить
коды дальше.
Кладовщикам (без высшего образования) глубоко плевать на всю эту систему Маркировка.
Надо отгрузить 100 коробок товара А. Случайно собрали 101 коробку. Заметили во время сканирования этих самых кодов
Маркировки. Да просто берем 1 любой короб и убираем из отгрузки. Пофиг, что код именно этой коробки уже отсканирован в
отгрузку.
А что? Я же должен был отгрузить 100 коробок и отгрузил 100. Не сходятся какие-то коды? Так это у вас программа шалит, оторвите
руки программисту.

mixsture 29 августа 2020 в 13:35 0

Именно так. Собственно, такое отношение и к складскому учету не редкость. Поэтому есть регулярные процедуры его валидации
(инвентаризация), которые
1) показывают, насколько вообще много ошибок было — что дает возможность планировать шаги, уменьшающие ошибки.
2) позволяют исправлять ошибки заранее, как можно ближе к их моменту возникновения — что сильно упрощает их поиск и
устранение.
— Так вот ничего подобного в культуре фирм в отношении маркировки сейчас нет.

vbifkol 29 августа 2020 в 15:06 +2


Собственно, такое отношение и к складскому учету не редкость.

Потому что другого в случае нескоропорта не надо. И потребителю, и покупателю, и перепродавцу, и дилеру, и производителю
— всем глубоко пофигу на серийный номер пачки, эта информация незначима.

Поэтому есть регулярные процедуры его валидации (инвентаризация)

Инвентаризация важна для потребительски значимых свойств товара. Инвентаризовать товар, не имеющий внятного срока
годности, по серии — бесполезная трата ресурсов, реальный бизнес этим не занимается.

показывают, насколько вообще много ошибок было — что дает возможность планировать шаги, уменьшающие ошибки.

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

позволяют исправлять ошибки заранее, как можно ближе к их моменту возникновения — что сильно упрощает их поиск и
устранение.

Нет, это только превращает незначительную ошибку в значительную.

vbifkol 28 августа 2020 в 21:01 +3

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

Это не плюс. Точнее даже так — это не плюс для поставщиков и потребителей.
А для поставщиков и потребителей это один жирный минус. За время перехода я несколько раз не смог купить своих сигарет вообще
никак («честный знак» подвисал на 10+ минут), а обычная покупка сигарет в супермаркете вообще стала невозможна, ибо мне сильно
некомфортно терпеть ненавидящие взгляды очереди, пока кассир сканирует мои 140 кодов.

Leonidhome 29 августа 2020 в 07:03 +5

Статья о том, как сделать профит для отдельной группы людей за счет всех… Малый бизнес потому и против маркировки, что она
добавляет кучу головной боли и затрат не принося никакой прибыли…

DisM 29 августа 2020 в 11:12 0

Кому то, все же прибыль она приносит, но не им :)


Но как это принято, все подается подл соусом — все ради народа.

podde 29 августа 2020 в 12:52 +2

Именно.
А на словах автора "Практически весь крупный бизнес за маркировку" я, как работник огромной федеральной белой компании,
нервно засмеялся. При том, что сужу о бизнес-процессах не только по своим IT-задачам и не только по своей компании (таки
общаемся с коллегами, а автор зачем-то решает за нас).
Вообще, на мой скромный взгляд, статья очень, очень странная. Словно компания, сидящая на госзаказе, получила задание добавить
хорошего пиара системе маркировки. Извиняюсь за резкий выпад, сугубо впечатление от поста.

Gamm 29 августа 2020 в 13:16 +1

Из своих наблюдений :

• пропагандировали работу через Эдо, спустя год после запуска это не рабочий процесс. После подтверждения УПД в Эдо может
пройти от 1 часа до одной недели до отражения этой операции в ЧЗ.

• задержка поставок от крупных поставщиков по причине неполадок с ЧЗ на этапе таможни до сих пор носит систематический
характер. Причем товар уже на складе а коды маркировки "задерживаются"

• непонятные изменения статусов кодов маркировки, без всяких операций в чз, техподдержка реагирует "… до 10 рабочих дней"
Mike_soft 29 августа 2020 в 13:23 +1

А теперь представьте (промасштабируйте) проблемы "чАстного знака" с сигаретами — на всю молочку. Да, Усманов и партнеры
озолотятся. Остальным ничего кроме геморроя это не принесет.

mixsture 29 августа 2020 в 13:40 +3

Чаще всего ошибки были банальны. Например, после подписи изменяли данные, либо терялся пробел или как-то несущественный
символ, но для подписи это критично, и после отправки в API приходил отказ без объяснений, т.к. подпись не проходила проверку.

К счастью в чатах чаще всего помогали и отвечали на такие вопросы. В целом, все эти проблемы лечатся или уже были излечены к 1
июля 2020.

Хорошее апи рассказывает о причине ошибки. А «в чатах помогали» намекает на околонулевую поддержку от производителя решения
— т.е. пользователи сами себе помогать должны.

victor_2004 30 августа 2020 в 22:45 +1

Угу. Даже тот же самый упомянутый «Техно чат» не имеет никакого отношения к ЧЗ. Это просто чат сообщества страдающих от ЧЗ
технарей, которые пытаются поддержать друг-друга.

Это один из чатов Альянса Форты, которые тоже никакого отношения к ЧЗ не имеют. Просто консультируют по вопросам
маркировки.

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

surVrus 29 августа 2020 в 16:27 +1

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

И тут собака и порылась…


Источник
Сначала разберемся с определениями слов.
«Маркировка – это нанесенные посредством прямой печати уникальные цифровые коды. „

Анализируем цели.
“Цели маркировки
Регулирование в сфере товарооборота призвано избавиться от подделок и незаконного ввоза продукции на территорию РФ.
Маркировка позволит избежать попадания контрафактной продукции на рынок. Это значит, что в результате потребители будут
защищены от потенциально опасных товаров, способных нанести вред здоровью. Обязательное нанесение идентификатора позволяет
контролировать товарооборот на всех стадиях.»

Далее цель — существительное, отделено от метода достижения цели для корректного анализа.

Какие цели декларируются:


Цель: безопасность потребителей.
Параметр: уровень безопасности.
Критерий: увеличение целевого параметра.
Метод: «защита от потенциально опасных товаров».
Нет определения и понимания что такое «безопасность» и почему именно только «потребителя».
Как понять получили или нет «выше уровень безопасности потребителя» — не опредеелно. Работает или нет указанный метод или нет
— неизвестно как понять или оценить.
Вроде бы считается, что если будет меньше «потенциально опасных товаров», то «безопасность потребителя» увеличиться. Вроде бы
маркировка должна как раз именно это и сделать (снизить количество опасных товаров). При этом маркировку прежде всего обязали
использовать для спиртных напитков. То есть вместо исключения из оборота «потенциально опасных товаров» (а алкоголь официально
считается именно таковым), предлагается применить новый метод маркировки…
В принципе, этого достаточно, чтобы показать, что методы не соответствуют цели. И что декларируемые цели — полный бред.
Но гораздо более интересные (и более реальные) цели упомянуты в тексте:
«Регулирование в сфере товарооборота.»
«Избавиться от незаконного ввоза продукции. „
“Контролировать товарооборот на всех стадиях.»
То есть все как обычно, «держать и не пущать...»
Нужно ли регулирование в указанной сфере?
Можно ли вообще как-то эффективно регулировать «товарооборот»?
Какую часть «товарооборота» можно и нужно регулировать вообще?
И самое главное: зачем эта регулировка нужна?
Опять все те же когнитивные ошибки, что и во множестве иных законов и документов, рожденных «интеллектуалами, но идиотами» (по
определению Насима Талеба).
Возможность управление сложной системой путем «регулирования» не доказана. Более того, много раз показано, что как раз такое
«регулирование» либо невозможно, либо приводит к непредсказуемым последствиям.
Ну да ладно. Проще будет посмотреть по результатам «регулирования» и использования «маркировки».
Главные результаты: дополнительный сбор денежных средств в пользу каких-то «групп интересов». Этот результат конкретный,
измеримый, значимый, и ограниченный во времени. То есть полностью соответствует правильно сформулированной цели по
критериям SMART. Мне кажется, можно считать цель «деньги» вполне корректной.
Иные цели мне не удалось корректно определить или увидеть.
Теперь за что эти деньги заплачены потребителями? За лицензию (патент) на использование части власти. То есть продается право
разрешить использовать то, что может быть запрещено или ограничено.
Если смотреть с такой точки зрения, то все становится на свои места.
Программное и аппаратное обеспечение должно соответствовать реальным целям. Оно и соответствует на 100%. И работает идеально.
Обратите внимание: так как остальные цели сформулированы и определены так себе, то и реализация тоже точно на таком же уровне.

wmgeek 29 августа 2020 в 16:34 0

Миллионы мобильных принтеров и маркировка при выкладке на полку с подгоном данных на всех предыдущих этапах.

victor_2004 30 августа 2020 в 22:41 +2

Давайте я отвечу как ИТ-шник, что я хочу от ЧЗ.


1) Исправить грубые ошибки в документации. У них XSD схема для обуви содержит ошибки, из-за которых схема просто невалидна.
2) Актуализировать документацию. Актуальную XSD схему для документа выбытия пришлось получать через техподдержку. Выложенная
на сайте не проходила.
3) Возвращать адекватные тексты ошибок. Если возвращается ошибка «документ не соответствует XSD схеме», то он действительно
должен ей не соответствовать. А не проходить со второго раза через 5 минут.
4) Прекратить возвращать стектрейсы в ошибках. Это же реально колхоз какой-то. У меня есть пример SQL запроса из стектрейса, по
которому видно их структуру базы данных.
5) Начать нормально версионировать API. Как делают нормальные компании. И если у вас API версии 3, то оно не будет менять своего
поведения. А новое поведение будет только в API версии 4.
6) Анонсировать новые версии API и сроки отключения старых версий. Хотя сейчас уже появился отдельный канальчик, где они
стараются это делать.
7) Дать нормальные тестовые стенды для интеграции. Это не блажь ИТ-шников. Штрафы за маркировку могут быть 50 — 300 тысяч
рублей. И вплоть до уголовки. И делать интеграцию сразу на бою — это колхоз еще тот. Если вы гос система, с который под угрозой
штрафов и уголовного преследования обязаны работать юр лица — делайте нормальные стенды.
8) Чтобы они тоже читали международные стандарты. Мне абсолютно непонятно, чем ЧЗ не устроило стандартное экранирование
спецсимволов в xml, что они отдельно свое придумали. И это была реально отдельная морока его соблюдать.
9) Обеспечивали доступность системы 99%. Чтобы каждый раз не гадать — это у них что-то опять сдохло или у тебя отвалилось. У людей
отгрузки останавливаются, контракты нарушаются из-за нестабильности работы системы. Если работа предприятий зависит от вашей
доступности и надежности, то будьте добры ее обеспечить. Либо уйти с рынка и дать другому участнику тендера на ГЧП обеспечить эту
самую надежность.

Честный знак — не стартапчик. А государственная информационная система.


С которой под угрозой штрафов и уголовного преследования обязаны работать очень много предприятий.
А ведут себя как стартапчик, у которого пром может на полдня отвалиться.
Который не может обеспечить качественную поддержку технических специалистов предприятий хотя бы на уровне документации. Что
приходится им писать с запросами типа «а дайте свежую версию документации, а то с сайта не подходит».
Мне в принципе не понятно по каким критериям проводился тендер на ГЧП и какой уровень надежности и за счет чего они обещали.

Думаю большая часть ИТ-шников согласится с перечисленными выше пунктами.

podde вчера в 14:33 0

Отличный меткий коммент.

mixsture вчера в 00:35 0

Это, конечно, придирка на уровне орфографии к самим ребятам из клеверенс: но именование переменных в коде ужасное.

MSG2 =…
MSG2Error =…
Msg =…
Три переменные, с близким названием, не очень понятным различием, написанные в разном стиле. Так не надо делать.

paranoya_prod вчера в 10:42 0

Продавцы процессоров в OEM упаковке нервно курят в сторонке и думают куда, ну куда прилепить этот честный знак.

YA4 вчера в 13:42 0

Спасибо за статью! А подскажет кто нибудь, с чего начать изучение интернета вещей?

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

САМОЕ ЧИТАЕМОЕ

Сутки Неделя Месяц

Август-2020 в Беларуси с точки зрения данных

+75 43,3k 37 168

Думал, что добьюсь большего к своим 35

+71 50,6k 137 244

Как мы внедрили скрытие аккаунтов в Telegram или #ДуровДобавьДвойноеДно

+98 19,8k 61 95

Сколько зарабатывают IT-шники в Великобритании и сколько при этом тратят

+21 21,1k 78 322

Опрос про big data в российских IT

Опрос

Ваш аккаунт Разделы Информация Услуги

Войти Публикации Устройство сайта Реклама

Регистрация Новости Для авторов Тарифы

Хабы Для компаний Контент

Компании Документы Семинары

Пользователи Соглашение Мегапроекты

Песочница Конфиденциальность Мерч

© 2006 – 2020 «Habr» Настройка языка О сайте Служба поддержки Мобильная версия

Вам также может понравиться