# Обработка КИЗ: 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 в «Честный знак».