Возможности
Всё, что делает КодКипер — по пунктам
Шесть разделов. Каждая строка ниже соответствует работающему экрану или маршруту API: список составлен по исходникам, а не по планам.
Хранение
Код хранится дважды: каноническими байтами — с настоящими разделителями 0x1D — и нормализованной формой без них, по которой идёт поиск.
- Разбор строго построчно: ни CSV-библиотеки, ни разделения по запятой и точке с запятой
- Ширины полей принуждаются шаблоном: GTIN ровно 14 цифр, серийный 1–20 символов, ключ проверки 4, код проверки 44
- Строки других товарных групп (табак, молочная продукция) не уничтожаются, а сохраняются как нестандартный формат
- Номер строки исходного файла сохраняется, поэтому «скачать партию» воспроизводит загруженный файл
- Дубликаты отбрасываются на уровне базы и попадают в отчёт с указанием артикула и партии

Загрузка
Один файл — одна партия — одна транзакция. Предпросмотр в браузере запускает тот же разборщик, что и сервер, поэтому отчёт до загрузки совпадает с отчётом после.
- Файлы .csv и .txt; размер одного файла — 16–128 МБ, по тарифу
- Двухпроходный разбор: первый проход измеряет типичную длину серийного номера, второй разбирает файл заново
- Файл, смешавший разные написания разделителя, докладывается по худшему из них
- Строки вне шаблона можно принять отдельным флагом — они лягут с пометкой «нестандартный формат»
- Откат партии целиком, пока из неё не выдан ни один код

Выгрузка
Коды уходят по принципу FIFO: первым выдаётся самый старый код артикула. Не по дате создания, а по порядку поступления — импорт пишет одну дату на весь файл.
- До 300 строк в одной выгрузке, до 1 000 000 кодов в строке
- Повторяющиеся артикулы складываются; «Выгрузить сколько есть» отдаёт остаток вместо отказа
- Один артикул — CSV, несколько — ZIP с отдельным файлом на артикул
- Три формата разделителя на выбор: настоящий 0x1D для программы печати, «<GS>» для Excel, без разделителей для сверки
- Повторное скачивание собирает файл заново и побайтово совпадает с первым
- Отмена выгрузки возвращает коды в остаток и сохраняет саму запись: выгрузка — бизнес-документ

Поиск и проверка
Код находится по любому написанию: с настоящими разделителями, с «<GS>», без них. Поиск идёт методом POST, чтобы код маркировки не попадал в журнал веб-сервера.
- Порядок поиска: нормализованный код, затем серийный номер, затем 14-значный GTIN
- Режим сканера: клавиатурная очередь, удержание фокуса, перехват 0x1D на уровне нажатия клавиши
- Журнал сессии сканера живёт только во вкладке и ничего не меняет в базе
- Массовая проверка списком: до 50 000 кодов за один заход
- Копирование кода из интерфейса побайтово точное

Учёт
Три состояния кода и ни одного лишнего: Создан, Выведен, Списан.
- Справочник артикулов с порогом низкого остатка
- Круговой обмен справочника таблицей: пустая ячейка очищает поле, отсутствующая колонка не трогает его
- Списание кодов с указанием причины и возврат в остаток
- Журнал всех действий с указанием пользователя, с фильтрами и выгрузкой в CSV
- Четыре роли: Владелец, Администратор, Оператор, Наблюдатель

Интеграция
REST API для 1С по токену Bearer. Три операции, документированные на странице настроек той же установки, откуда токен и выдан.
- Остатки по артикулам
- Выгрузка кодов — тот же FIFO и та же транзакция, что и в интерфейсе
- Проверка кода по любому написанию
- Токен имеет собственную роль: «только чтение» или «оператор»
- Ограничение частоты запросов: своё ведро на каждый токен и общее на организацию — второе задаётся тарифом

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





