No description
Find a file
2026-03-05 11:23:15 +03:00
.gitattributes chore: добавить .gitattributes для нормализации line endings (LF) 2026-03-03 10:33:33 +03:00
.gitignore chore(release): v1.4.0 2026-03-05 11:23:15 +03:00
CHANGELOG.md chore(release): v1.4.0 2026-03-05 11:23:15 +03:00
get_token.py chore(release): v1.0.0 первый релиз 2026-03-03 10:33:13 +03:00
README.md docs: убрать ссылки на репозитории из README 2026-03-03 10:35:37 +03:00
requirements.txt feat(terminal): добавить вывод QR-кода отгрузки в терминал после сортировки 2026-03-05 10:05:15 +03:00
sort_demand.py chore(release): v1.4.0 2026-03-05 11:23:15 +03:00
VERSION chore(release): v1.4.0 2026-03-05 11:23:15 +03:00

sort_demand

Утилита для сортировки позиций отгрузки в МойСклад по ячейкам склада.

Зачем

МойСклад не умеет сортировать позиции внутри документа по произвольному полю.
Скрипт читает отгрузки со статусом «на сборке», даёт выбрать нужную,
показывает позиции отсортированными по ячейке и (по желанию) сохраняет порядок в API.

Требования

  • Python 3.12+
  • Токен МойСклад (Bearer). Получить: python get_token.py

Установка

python -m venv .venv
.venv\Scripts\activate        # Windows
pip install -r requirements.txt
python get_token.py            # сохранить токен в keyring

Использование

# Просмотр отгрузок за 30 дней со статусом «на сборке»
python sort_demand.py

# Другой период и статус
python sort_demand.py --days 14 --state-name "в работе"

# Сохранить порядок без подтверждения (для скриптов/автоматизации)
python sort_demand.py --apply

# Отладочный вывод
python sort_demand.py --debug

Параметры

Параметр По умолчанию Описание
--days 30 Период выборки отгрузок (дней назад)
--state-name "на сборке" Название статуса для фильтра
--cell-attr "Ячейка" Название пользовательского атрибута ячейки (fallback)
--apply False Авто-подтверждение сохранения
--debug False Вывод сырых ответов API

Как работает сохранение

  1. POST /entity/demand/{id}/positions/delete — batch-удаление всех позиций (1 запрос)
  2. POST /entity/demand/{id}/positions — создание в отсортированном порядке (1 запрос)
  3. Повторное чтение из API + сверка: кол-во строк, единицы, сумма, порядок

Важно: PUT на документ игнорирует поле positions — это подтверждено.
Единственный рабочий способ изменить порядок — удалить и пересоздать.

Лимиты API

40 запросов / 3 секунды (Bearer-токен). Встроенный token bucket + retry при 429/5xx.