BUH_bot/CHANGELOG.md

6.6 KiB
Raw Permalink Blame History

Changelog

[2025-11-06] - Исправление: GUID договора и выбор счетов 62.xx в 1С

Fixed

  • 🐛 Критическое исправление: GUID договора теперь формируется с учётом валюты и признака у.е.
  • 📊 Выбор счетов в 1С: Рублёвые документы теперь корректно попадают на счета 62.01/62.02 вместо 62.21/62.22
  • 🔍 Добавлено диагностическое логирование для выявления проблем с валютой и счетами

Technical Details

  • Проблема: Генератор создавал один GUID договора для всех валют → при наличии старого валютного договора рублёвые документы попадали на валютные счета 62.21/62.22
  • Решение: GUID договора теперь включает валюту и признак у.е.: contract-{cp_id}-{org_id}-CUR-{currency_code}-UE-{is_ue}
  • Результат:
    • RUB + не у.е. → отдельный договор → счета 62.01 (задолженность) / 62.02 (авансы)
    • Иностранная валюта → отдельный договор → счета 62.21 / 62.22
    • Условные единицы → отдельный договор → счета 62.31 / 62.32

Documentation

  • 📖 Создана подробная документация: docs/CONTRACT_UUID_FIX.md
  • ✅ Инструкции по проверке и исправлению существующих данных
  • 🔗 Ссылки на типовую документацию 1С

[2025-11-05] - Формат 1С EnterpriseData 1.20

Added

  • 🆕 Формат 1С EnterpriseData 1.20 - новый генератор XML для прямой загрузки документов реализации в конфигурации 1С
  • 📄 Класс XML1CGenerator в modules/xml_generator.py для генерации документов в формате обмена 1С
  • 📖 Документация по формату 1С: docs/XML_1C_FORMAT.md
  • ✨ Поддержка UUID, ISO 8601 дат, сумм в рублях (без копеек)
  • 🏢 Корректная обработка ИП и юридических лиц в формате 1С
  • 💼 Экспорт банковских реквизитов организации
  • 📦 Детализация товарных позиций с кодами ОКЕИ
  • 🔄 Полная структура документа "Реализация товаров и услуг" для 1С

Changed

  • 📝 Обновлен README с информацией о новом формате
  • 🔄 Сохранены оба формата: ВерсФорм 5.03 (для ФНС) и 1С EnterpriseData 1.20 (для 1С)

Technical Details

  • Namespace: http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.20
  • Формат даты: ISO 8601 (YYYY-MM-DDTHH:MM:SS)
  • Денежные суммы: рубли (целое число)
  • UUID для всех ссылок на объекты
  • Полная интеграция с API МойСклад

Обновление бота - Поиск заказов

✅ Исправлено

  1. Проблема с командой /orders - добавлено детальное логирование и обработка ошибок
  2. Глобальный обработчик ошибок - все ошибки теперь логируются и пользователь получает понятное сообщение

🆕 Новые возможности

Команда поиска заказа по номеру

Теперь вы можете искать заказы по номеру командой /search

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

/search 00001
/search СЧ-123
/search Заказ

Как работает:

  1. Отправьте команду /search с номером заказа
  2. Бот найдет все подходящие заказы в МойСклад
  3. Выберите нужный заказ из списка результатов
  4. Далее работа идет как обычно: выбор типа документа и формата

📋 Обновленные команды

  • /start - Приветствие и описание бота
  • /orders - Показать последние 10 заказов
  • /search <номер> - НОВОЕ! Найти заказ по номеру
  • /help - Справка по командам

🔍 Примеры использования

Просмотр последних заказов:

/orders

Поиск конкретного заказа:

/search 00042

Поиск по части номера:

/search СЧ-2024

🛠️ Технические улучшения

  1. Детальное логирование - теперь все действия логируются для отладки
  2. Обработка исключений - добавлены try-catch блоки для всех критических операций
  3. Глобальный error_handler - перехватывает все необработанные ошибки
  4. Информативные сообщения - пользователь получает понятные сообщения об ошибках

🚀 Запуск

После обновления просто перезапустите бота:

python main.py

Бот автоматически:

  • Проверит подключение к МойСклад
  • Проверит токен Telegram
  • Запустит все обработчики

📝 Логи

Теперь в логах вы увидите:

  • Какой пользователь отправил команду
  • Сколько заказов найдено
  • Детали всех ошибок с трассировкой

Пример лога:

INFO - Команда /orders от пользователя 123456789
INFO - Запрос к API МойСклад...
INFO - Получено заказов: 10

⚠️ Примечания

  • Поиск работает по частичному совпадению (можно искать часть номера)
  • Максимум показывается 10 результатов поиска
  • Если заказ не найден, бот предложит использовать /orders