К основному содержимому
Разделы сайта

Учёт кодов маркировки для лёгкой промышленности

Что загрузили, то и выгрузится. Вместе с разделителями 0x1D

КодКипер хранит код маркировки побайтово: с настоящим управляющим байтом 0x1D, с запятыми и кавычками внутри серийного номера, с номером строки исходного файла. Повторное скачивание партии даёт тот же файл — навсегда.

Без платёжных данных. На время пробного периода — 20 000 кодов и 2 пользователя, файл кодов до 16 МБ.

Один и тот же код из пяти разных файлов

Серийный номер во всех пяти — elvK55y?o!/rt

  • Файл с портала «Честный знак»на месте разделителя — настоящий байт 0x1D
    010462043937551521elvK55y?o!/rt918TJP92qT/jZVGEoBm0cMpXtTOihQuWe206oE6Ro+UdM/9Ux3N=

    Код восстановлен: Настоящий разделитель GS (0x1D)

  • Файл, выгруженный из ERPна месте разделителя — текст «<GS>»
    010462043937551521elvK55y?o!/rt<GS>918TJP<GS>92qT/jZVGEoBm0cMpXtTOihQuWe206oE6Ro+UdM/9Ux3N=

    Код восстановлен: Текстовая запись разделителя (<GS> и подобные)

  • Файл, прошедший через «Блокнот»на месте разделителя — знак вопроса — он же допустимый символ серийного номера
    010462043937551521elvK55y?o!/rt?918TJP?92qT/jZVGEoBm0cMpXtTOihQuWe206oE6Ro+UdM/9Ux3N=

    Код восстановлен: Разделители восстановлены — в файле они были повреждены

  • Файл из письма подрядчикана месте разделителя — разделителей нет вовсе
    010462043937551521elvK55y?o!/rt918TJP92qT/jZVGEoBm0cMpXtTOihQuWe206oE6Ro+UdM/9Ux3N=

    Код восстановлен: Разделителей в файле не было — восстановлены по структуре

  • Строка, у которой серийный номер кончается на «?»на месте разделителя — «?» — и разделитель, и часть номера одновременно
    010462043937551521elvK55y?918TJP92qT/jZVGEoBm0cMpXtTOihQuWe206oE6Ro+UdM/9Ux3N=

    Код отклонён: Неоднозначный разделитель: не удалось определить границу серийного номера

Что хранится и что выгрузится обратно — побайтово

010462043937551521elvK55y?o!/rt918TJP92qT/jZVGEoBm0cMpXtTOihQuWe206oE6Ro+UdM/9Ux3N=

Чипы «GS» — настоящие байты 0x1D: они лежат в этой странице и попадут в буфер обмена, если выделить код и скопировать.

Почему это вообще задача

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

  • Коды приходят файлами из разных систем

    Портал «Честный знак», типография, ERP, письмо от подрядчика. Каждый источник пишет разделитель по-своему, и файл, который открыли и сохранили в «Блокноте», уже не тот файл, что скачали.

  • Разделитель 0x1D теряется по дороге

    В одном файле это настоящий управляющий байт, в другом — текст «<GS>», в третьем вместо него стоит знак вопроса, в четвёртом разделителей нет вовсе. Глазами эти четыре файла не отличить: строка выглядит одинаково.

  • Серийные номера содержат запятые и кавычки

    В настоящих файлах клиента серийный номер составлен из символов < > & ' " * ( ) ! ? _ - . , + / = : ; # $ % @ ^ ~ | { } [ ]. Поэтому файл кодов нельзя разбирать как CSV — ни библиотекой, ни разделением по запятой. Один код с кавычкой был бы уничтожен молча.

  • Один потерянный код — это штраф

    Не «неудобство» и не «расхождение в отчёте». Поэтому продукт устроен вокруг одного обещания: что загрузили, то и выгрузится, вместе с разделителями 0x1D.

Главное свойство

Когда разделитель восстановить нельзя, КодКипер отказывается

Разбор идёт справа налево: код проверки ровно 46 символов, ключ проверки ровно 6, поэтому граница между ними доказуема. Граница «серийный номер — ключ» — нет. Её решает типичная длина серийного номера по всему файлу, а при ничьей разборщик не выбирает большинством голосов: строка отклоняется с сообщением «Неоднозначный разделитель».

Ничья — не мода

Строка, отклонённая по неоднозначности, попадает в отчёт с номером строки файла и текстом причины. Её можно скачать отдельным файлом, поправить источник и загрузить снова. Это дороже, чем «загрузилось 100 %», и дешевле, чем один испорченный код.
Отчёт предпросмотра файла: строки с восстановленными разделителями и строки, отклонённые по неоднозначности
Предпросмотр до загрузки. В браузере работает тот же разборщик, что и на сервере, поэтому отчёт до загрузки совпадает с отчётом после.

Как проходит день склада

  1. Загрузка

    Файл .csv или .txt, размер по тарифу: в пробном периоде — 16 МБ, на платных тарифах — от 32 до 128 МБ, у каждого свой. Один файл — одна партия — одна транзакция. Дубликаты и нестандартные строки попадают в отчёт с указанием артикула.

  2. Хранение

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

  3. Выгрузка

    Коды уходят по принципу FIFO: первым выдаётся самый старый код артикула. Один артикул — CSV, несколько — ZIP с файлом на артикул.

  4. Поиск

    Код находится по любому написанию. Есть режим сканера и массовая проверка списком до 50 000 кодов.

Отчёт о загрузке партии: сколько кодов принято, сколько дубликатов, сколько строк отклонено
Отчёт о загрузке: принято, дубликаты с владеющим артикулом, отклонённые строки.
Подтверждение выгрузки: список артикулов, количество кодов и формат разделителя
Подтверждение выгрузки: формат разделителя выбирается здесь — 0x1D для программы печати.

Что входит

Полный список — на странице возможностей. Здесь по одному абзацу на раздел.

Хранение

Код хранится дважды: каноническими байтами — с настоящими разделителями 0x1D — и нормализованной формой без них, по которой идёт поиск.

Загрузка

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

Выгрузка

Коды уходят по принципу FIFO: первым выдаётся самый старый код артикула. Не по дате создания, а по порядку поступления — импорт пишет одну дату на весь файл.

Поиск и проверка

Код находится по любому написанию: с настоящими разделителями, с «<GS>», без них. Поиск идёт методом POST, чтобы код маркировки не попадал в журнал веб-сервера.

Учёт

Три состояния кода и ни одного лишнего: Создан, Выведен, Списан.

Интеграция

REST API для 1С по токену Bearer. Три операции, документированные на странице настроек той же установки, откуда токен и выдан.

Читать до покупки

Чего КодКипер не делает

Этот список — часть предложения, а не оговорка мелким шрифтом. Если чего-то из перечисленного вам нужно, КодКипер вам не подойдёт, и лучше узнать это сейчас.

Отдельно: КодКипер не заменяет личный кабинет «Честного знака». Он ведёт ваш склад кодов, а не отчитывается за вас в систему маркировки.

  • Не обращается к «Честному знаку» и ГИС МТ: массовая проверка сверяет список с собственной базой КодКипера, а не с состоянием кода в системе маркировки
  • Не проверяет криптографическую подпись кода: код проверки (AI 92) хранится и сверяется по длине
  • Разбирает только шаблон лёгкой промышленности 01/21/91/92: табак и молочная продукция — это невалидные строки, которые можно лишь сохранить как есть
  • Не печатает этикетки и не управляет принтерами: КодКипер отдаёт файл программе печати
  • Загрузчик кодов принимает только .csv и .txt; .xlsx читается в двух табличных диалогах и никогда не записывается
  • Нет мобильного приложения, мультискладского учёта, гибких ролей, двухфакторной аутентификации и единого входа
  • Нет уведомлений о низком остатке: порог только красит число на экране
  • Восстановление разделителя работает для известных написаний и четырёх неоднозначных символов — и отказывается угадывать при ничьей

Пределы названы вслух

В продукте жёсткие потолки везде, и это свойство, а не недоделка: предел, о котором знают заранее, лучше очереди, которая однажды не вернётся.

Жёсткие ограничения продукта
ЧтоПредел
Размер файла кодов16–128 МБ, по тарифу
Форматы файла кодов.csv, .txt
Длина серийного номера1–20 символов
Строк в одной выгрузке300
Кодов в одной строке выгрузки1 000 000
Кодов в массовой проверке50 000
Строк в читаемом .xlsx20 000 строк, 64 колонки
Длина артикула120 символов, при загрузке файла — 64

Размер файла кодов — единственный предел из таблицы, который зависит от тарифа: в пробном периоде — 16 МБ, на платных тарифах — от 32 до 128 МБ, у каждого свой. Точное значение каждого тарифа — на странице цен. Файл больше предела не принимается целиком: отказ приходит до загрузки, а не после неё.

14 дней, без платёжных данных

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

  • Отдельный файл базы на организацию
  • Резервная копия базы одной кнопкой в любой момент
  • Ни один код не удаляется никогда
Склад кодов маркировки «Честный знак» · КодКипер