Учёт кодов маркировки для лёгкой промышленности
Что загрузили, то и выгрузится. Вместе с разделителями 0x1D
КодКипер хранит код маркировки побайтово: с настоящим управляющим байтом 0x1D, с запятыми и кавычками внутри серийного номера, с номером строки исходного файла. Повторное скачивание партии даёт тот же файл — навсегда.
Без платёжных данных. На время пробного периода — 20 000 кодов и 2 пользователя, файл кодов до 16 МБ.
Один и тот же код из пяти разных файлов
Серийный номер во всех пяти — elvK55y?o!/rt
- Файл с портала «Честный знак»на месте разделителя — настоящий байт 0x1D010462043937551521elvK55y?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=
Код отклонён: Неоднозначный разделитель: не удалось определить границу серийного номера
Что хранится и что выгрузится обратно — побайтово
Чипы «GS» — настоящие байты 0x1D: они лежат в этой странице и попадут в буфер обмена, если выделить код и скопировать.
Почему это вообще задача
Код маркировки — не строка в таблице. Это четыре поля, склеенные управляющим байтом, который не видно глазом и который теряет любая программа, не знающая, что он там есть.
Коды приходят файлами из разных систем
Портал «Честный знак», типография, ERP, письмо от подрядчика. Каждый источник пишет разделитель по-своему, и файл, который открыли и сохранили в «Блокноте», уже не тот файл, что скачали.
Разделитель 0x1D теряется по дороге
В одном файле это настоящий управляющий байт, в другом — текст «<GS>», в третьем вместо него стоит знак вопроса, в четвёртом разделителей нет вовсе. Глазами эти четыре файла не отличить: строка выглядит одинаково.
Серийные номера содержат запятые и кавычки
В настоящих файлах клиента серийный номер составлен из символов < > & ' " * ( ) ! ? _ - . , + / = : ; # $ % @ ^ ~ | { } [ ]. Поэтому файл кодов нельзя разбирать как CSV — ни библиотекой, ни разделением по запятой. Один код с кавычкой был бы уничтожен молча.
Один потерянный код — это штраф
Не «неудобство» и не «расхождение в отчёте». Поэтому продукт устроен вокруг одного обещания: что загрузили, то и выгрузится, вместе с разделителями 0x1D.
Главное свойство
Когда разделитель восстановить нельзя, КодКипер отказывается
Разбор идёт справа налево: код проверки ровно 46 символов, ключ проверки ровно 6, поэтому граница между ними доказуема. Граница «серийный номер — ключ» — нет. Её решает типичная длина серийного номера по всему файлу, а при ничьей разборщик не выбирает большинством голосов: строка отклоняется с сообщением «Неоднозначный разделитель».
Ничья — не мода

Как проходит день склада
Загрузка
Файл .csv или .txt, размер по тарифу: в пробном периоде — 16 МБ, на платных тарифах — от 32 до 128 МБ, у каждого свой. Один файл — одна партия — одна транзакция. Дубликаты и нестандартные строки попадают в отчёт с указанием артикула.
Хранение
Три состояния: Создан, Выведен, Списан. Номер строки исходного файла сохраняется, поэтому партию можно скачать обратно тем же файлом.
Выгрузка
Коды уходят по принципу FIFO: первым выдаётся самый старый код артикула. Один артикул — CSV, несколько — ZIP с файлом на артикул.
Поиск
Код находится по любому написанию. Есть режим сканера и массовая проверка списком до 50 000 кодов.


Что входит
Полный список — на странице возможностей. Здесь по одному абзацу на раздел.
Хранение
Код хранится дважды: каноническими байтами — с настоящими разделителями 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 |
| Строк в читаемом .xlsx | 20 000 строк, 64 колонки |
| Длина артикула | 120 символов, при загрузке файла — 64 |
Размер файла кодов — единственный предел из таблицы, который зависит от тарифа: в пробном периоде — 16 МБ, на платных тарифах — от 32 до 128 МБ, у каждого свой. Точное значение каждого тарифа — на странице цен. Файл больше предела не принимается целиком: отказ приходит до загрузки, а не после неё.
14 дней, без платёжных данных
Организация создаётся сразу, со своим отдельным файлом базы. Загрузите один настоящий файл кодов и посмотрите на отчёт — этого обычно достаточно, чтобы понять, подходит ли продукт.
- Отдельный файл базы на организацию
- Резервная копия базы одной кнопкой в любой момент
- Ни один код не удаляется никогда


