# Генератор XML в формате 1С EnterpriseData 1.20 ## Описание Создан новый класс `XML1CGenerator` для генерации XML документов в формате обмена данными 1С (EnterpriseData 1.20). Этот формат используется для загрузки документов реализации в конфигурации 1С. ## Отличия от формата ВерсФорм 5.03 | Параметр | Формат 1С | ВерсФорм 5.03 (УПД/ТН) | |----------|-----------|------------------------| | **Назначение** | Обмен данными между 1С | УПД/ТОРГ-12 для ФНС | | **Корневой элемент** | `` | `<Файл>` | | **Namespace** | http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.20 | Нет | | **Документ** | `<Документ.РеализацияТоваровУслуг>` | `<СвСчФакт>` | | **Формат даты** | ISO 8601 (2025-10-23T09:37:11) | ДД.ММ.ГГГГ | | **Суммы** | Рубли (целое число) | Рубли с копейками | ## Использование ### Базовый пример ```python from modules.xml_generator import XML1CGenerator # Создание генератора generator = XML1CGenerator() # Подготовка данных заказа из МойСклад order_data = { "order": { "id": "313256ef-b4b7-11f0-b68a-50ebf69bde57", "name": "4869", "moment": "2025-10-23T09:37:11Z", "sum": 1059900, # В копейках! "rate": { "currency": { "name": "руб.", "isoCode": "643" } } }, "organization": { "id": "288f7520-b8e5-11e8-80bc-e0d55e458e90", "name": "Беляев А.Ю. ИП", "legalTitle": "Индивидуальный предприниматель Беляев Андрей Юрьевич", "inn": "263605160270", "companyType": "entrepreneur", # или "legal" "legalLastName": "Беляев", "legalFirstName": "Андрей", "legalMiddleName": "Юрьевич" }, "counterparty": { "id": "f37958af-d807-11ef-b676-50ebf69bde57", "name": "АСЕЕВА АННА КУЗЬМИНИЧНА ИП", "legalTitle": "ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ АСЕЕВА АННА КУЗЬМИНИЧНА", "inn": "383700097634", "companyType": "entrepreneur" }, "org_accounts": [ { "id": "bdd39811-27ee-11ea-80e7-e0d55e458e90", "accountNumber": "40802810860270001979", "bankName": "СТАВРОПОЛЬСКОЕ ОТДЕЛЕНИЕ N5230 ПАО СБЕРБАНК", "bic": "040702615", "correspondentAccount": "30101810907020000615" } ], "positions": [ { "assortment": { "name": "Жевательная резинка RUSGUM Арбузное трио 24 мм 7*150 штук", "code": "00-00000682", "uom": {"name": "шт"} }, "quantity": 1, "price": 337300, # В копейках! "vat": 5 } ] } # Генерация XML xml_string = generator.generate_realization(order_data, "realization_1c.xml") print("XML создан успешно!") ``` ## Структура XML документа ### 1. Message Header ```xml http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.20 2025-11-05T10:39:56 1.20 ``` ### 2. Body с документом реализации ```xml <Документ.РеализацияТоваровУслуг> <КлючевыеСвойства>... <ВидОперации>РеализацияКлиенту <Товары>... ... ``` ## Обязательные поля ### Организация (продавец) - `id` - UUID организации - `name` - Краткое наименование - `legalTitle` - Полное наименование - `inn` - ИНН - `companyType` - Тип: "entrepreneur" или "legal" Для ИП дополнительно: - `legalLastName` - Фамилия - `legalFirstName` - Имя - `legalMiddleName` - Отчество (опционально) ### Контрагент (покупатель) - `id` - UUID контрагента - `name` - Наименование - `legalTitle` - Полное наименование - `inn` - ИНН - `companyType` - Тип ### Заказ - `id` - UUID заказа - `name` - Номер документа - `moment` - Дата в ISO формате - `sum` - Сумма в копейках ### Позиции - `assortment.name` - Наименование товара - `assortment.code` - Код товара (опционально) - `assortment.uom.name` - Единица измерения - `quantity` - Количество - `price` - Цена в копейках - `vat` - Ставка НДС (5, 10, 20) ## Интеграция с ботом В `bot.py` добавьте выбор формата: ```python from modules.xml_generator import XMLGenerator, XML1CGenerator # При генерации документа def generate_document(order_data, format_type): if format_type == "1c": generator = XML1CGenerator() xml = generator.generate_realization(order_data, "doc.xml") elif format_type == "upd": generator = XMLGenerator() xml = generator.generate_upd(order_data, "doc.xml") elif format_type == "torg12": generator = XMLGenerator() xml = generator.generate_tn(order_data, "doc.xml") return xml ``` ## Особенности формата 1. **Суммы в рублях** - Все денежные значения в целых рублях (без копеек) 2. **UUID везде** - Все ссылки используют UUID формат 3. **Дата ISO 8601** - Формат: `YYYY-MM-DDTHH:MM:SS` 4. **Номер с паддингом** - Номер документа дополняется пробелами до 11 символов 5. **Тип лица** - "ФизическоеЛицо" для ИП, "ЮридическоеЛицо" для ООО 6. **НДС извлекается** - Сумма НДС вычисляется из общей суммы (включающей НДС) ## Проверка результата Сгенерированный XML можно загрузить в 1С через: - Обработку "Универсальный обмен данными в формате XML" - Загрузку из файла в документе "Реализация товаров и услуг" ## Поддержка При возникновении проблем проверьте: 1. Все обязательные поля заполнены 2. Суммы передаются в копейках (умножить на 100) 3. Дата в ISO формате с временем 4. ИНН корректный (10 или 12 цифр) 5. UUID в формате: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` ## Версии - **1.0** (2025-11-05) - Начальная версия с поддержкой документа реализации