# 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. **Информативные сообщения** - пользователь получает понятные сообщения об ошибках ## 🚀 Запуск После обновления просто перезапустите бота: ```bash python main.py ``` Бот автоматически: - Проверит подключение к МойСклад - Проверит токен Telegram - Запустит все обработчики ## 📝 Логи Теперь в логах вы увидите: - Какой пользователь отправил команду - Сколько заказов найдено - Детали всех ошибок с трассировкой Пример лога: ``` INFO - Команда /orders от пользователя 123456789 INFO - Запрос к API МойСклад... INFO - Получено заказов: 10 ``` ## ⚠️ Примечания - Поиск работает по частичному совпадению (можно искать часть номера) - Максимум показывается 10 результатов поиска - Если заказ не найден, бот предложит использовать /orders