Files
obrabotka_kiz/README.md
T
Igor K.andClaude Opus 5.5 a6a3d5d6cd feat: обрезка КИЗ до 31 символа, README, инструкции для AI-агентов
- VBS и Python: в итоговом CSV код КИЗ обрезается до первых 31 символа
  (код без криптохвоста: 01 + GTIN + 21 + серийный номер); более короткий
  код остаётся как есть, с замечанием в отчёте. Копия kiz_to_csv.py в
  портативном комплекте обновлена так же.
- README.md: инструкция на русском, переписана проще и яснее;
  Инструкция_экспорт_CSV.docx пересобрана из того же текста, с настоящими
  заголовками и списками.
- AGENTS.md, CLAUDE.md, .agents/ (скилл kiz-testing, папки plans и reports).
- .gitignore для .DS_Store; .gitattributes хранит файлы без изменения
  концов строк (.bat и .vbs нужны CRLF).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 06:38:47 -04:00

8.8 KiB
Raw Blame History

Обработка КИЗ: CSV для вывода товаров из оборота в «Честном знаке»

Скрипт берёт два файла Excel — товарную накладную и таблицу с отсканированными кодами КИЗ — и делает из них CSV-файл для загрузки в «Честный знак».

Есть два варианта скрипта. Они работают одинаково, выберите любой:

  • VBS — для Windows с установленным Excel: obrabotka_kiz_vb/xlsx_to_csv_utf8.vbs.
  • Python — для Windows, Mac и Linux: obrabotka_kiz_python/kiz_to_csv.py. Для Windows без прав администратора есть готовый портативный комплект: папка obrabotka_kiz_python/KIZ_portable_Win7.

Что делает скрипт

  1. Читает два файла:
    • файл 1 — товарная накладная (ТОРГ-12) от поставщика;
    • файл 2 — ваш файл с отсканированными кодами КИЗ.
  2. Из каждого кода КИЗ берёт код товара GTIN — 14 цифр после «01» в начале кода.
  3. Находит этот товар в накладной и записывает напротив кода КИЗ: B — название, C — цена, D — 1, E — 796 (код единицы «штука»), F — ставка НДС со знаком %, G — «КИЗ».
  4. Обрезает каждый код КИЗ до первых 31 символа. Это код без криптохвоста: «01» + GTIN (14 цифр) + «21» + серийный номер (13 символов). Если код короче 31 символа, он остаётся как есть, а в отчёте появляется замечание.
  5. Сверяет количество: сколько кодов КИЗ каждого товара отсканировано и сколько указано в накладной.
  6. Сохраняет рядом с файлом КИЗ два файла:
    • <имя>.csv — его загружайте в «Честный знак»;
    • <имя>_report.txt — отчёт: сверка по каждому товару и все замечания.

Сами файлы Excel не изменяются, макросы в них не нужны.

Требования к файлам

Оба файла: данные на первом листе, формат .xlsx (VBS-скрипт читает и .xls).

Накладная (файл 1):

  • товары начинаются с ряда 19;
  • колонка B («Наименование») — название товара, пробел и GTIN в самом конце, например Мишка с сердцем 22см 04640720990098. GTIN — 14 цифр, можно 13 без ведущего нуля;
  • колонка K — количество, L — цена, N — ставка НДС.

Файл КИЗ (файл 2):

  • коды КИЗ — в последней заполненной колонке;
  • у этой колонки должен быть формат «Текстовый», иначе Excel может испортить длинные коды. Настройте это один раз и сохраните в шаблоне.

Вариант 1. VBS-скрипт (Windows + Excel)

Нужно: Windows 7 или новее и Excel 2007, 2010, 2013 или 2016.

  1. Скопируйте xlsx_to_csv_utf8.vbs в любую папку на рабочем компьютере.
  2. Сохраните и закройте оба файла Excel.
  3. Дважды щёлкните xlsx_to_csv_utf8.vbs.
  4. В первом окне выберите файл с КИЗ, во втором — накладную. Проще: перетащите файл с КИЗ мышью на значок скрипта — тогда останется выбрать только накладную.
  5. Excel ненадолго откроется в фоне — это нормально.
  6. В конце появится окно с итогом: сколько кодов обработано и совпали ли количества с накладной.

Если антивирус блокирует запуск. Некоторые антивирусы блокируют любые файлы .vbs — это ложное срабатывание. Разрешите запуск в окне антивируса. Скрипт ничего не устанавливает и не удаляет: он только читает два файла через Excel и записывает рядом CSV и отчёт.

Вариант 2. Python (Windows, Mac, Linux)

Нужно: Python 3.8 или новее и пакет openpyxl. На Windows 7 работает только Python 3.8.

Установка (один раз):

  1. Скачайте Python с https://www.python.org/downloads/ (для Windows 7 — версию 3.8.10).
  2. Запустите установщик и в первом же окне внизу поставьте галочку «Add python.exe to PATH». Без неё скрипт не найдёт Python.
  3. Нажмите Win+R, введите cmd, нажмите Enter и выполните команду pip install openpyxl.

Запуск:

  1. Дважды щёлкните kiz_to_csv.bat (Windows) или kiz_to_csv.command (Mac).
  2. В первом окне выберите накладную, во втором — файл с КИЗ. Если перетащить файл с КИЗ на значок kiz_to_csv.bat, останется выбрать только накладную.
  3. В конце появится окно с итогом — нажмите «ОК».

Из командной строки можно передать оба файла сразу, тогда окон выбора не будет: python3 kiz_to_csv.py накладная.xlsx файл_КИЗ.xlsx.

Если чёрное окно kiz_to_csv.bat сразу закрывается — прочитайте текст в нём: скрипт сам пишет, чего не хватает (Python или openpyxl) и что сделать.

Старый формат .xls Python-версия не читает: откройте файл в Excel и сохраните как .xlsx.

Вариант 3. Портативный комплект для Windows (без установки и прав администратора)

Папка KIZ_portable_Win7 содержит встроенный Python 3.8.10, openpyxl, скрипт и файл запуска KIZ_CSV.bat. Работает на Windows 7, Server 2008 R2, Windows 10 и 11. Ничего не устанавливается, реестр не меняется.

  1. Скопируйте папку целиком в любое место на рабочем компьютере.
  2. Дважды щёлкните KIZ_CSV.bat.
  3. В чёрном окне появятся два запроса: сначала путь к накладной, затем к файлу с КИЗ. Проще всего перетащить файл мышью в окно и нажать Enter. Ещё проще: перетащите оба файла сразу на значок KIZ_CSV.bat — первый файл считается накладной, второй — файлом КИЗ.
  4. Результат и сверка количества появятся в том же окне.

Проверка результата

  1. Если итоговое окно с восклицательным знаком — откройте отчёт <имя>_report.txt и разберитесь с замечаниями до загрузки CSV.
  2. Откройте CSV в Блокноте (правая кнопка → «Открыть с помощью» → «Блокнот»), а не в Excel.
  3. Проверьте:
    • колонки разделены запятыми;
    • русский текст читается нормально;
    • ставка НДС со знаком %, например 10%;
    • цены с точкой, например 358.18;
    • последняя колонка — код КИЗ длиной 31 символ; если в коде есть запятая, он в двойных кавычках, например "0104640720990098215KK,kKKkKkKKK".
  4. Если всё так — загружайте CSV в «Честный знак».

Порядок работы каждый день

  1. Отсканируйте коды КИЗ в файл Excel.
  2. Запустите скрипт и выберите оба файла.
  3. Если все количества совпали — загрузите CSV в «Честный знак».