maxistyle/1c-enterprise-data
最新稳定版本:v1.2.0
Composer 安装命令:
composer require maxistyle/1c-enterprise-data
包简介
PHP library for generating 1C EnterpriseData XML format
README 文档
README
PHP библиотека для генерации XML файлов в формате 1C EnterpriseData для импорта в 1С.
Возможности
- Генерация XML документов в формате 1C EnterpriseData
- Поддержка документов типа "Счёт покупателю" (InvoiceOut), "Счёт от поставщика" (InvoiceIn), "Акт от поставщика" (ActIn), "Акт поставщику" (ActOut)
- Автоматическое форматирование XML с BOM для корректного отображения кириллицы в 1С
- Соответствие стандартам PSR-12
- Полная документация и примеры использования
- Готовность к публикации в Packagist
- Поддержка качества кода с PHPStan и PHP_CodeSniffer
Установка
Установка через Composer:
composer require maxistyle/1c-enterprise-data
Требования
- PHP >= 8.1
- Расширение PHP DOM
Последние изменения
v1.2.0 (2025-12-04)
- ➕ Реализация документа "Акт от поставщика" (ActIn)
- ➕ Реализация документа "Акт поставщику" (ActOut)
v1.1.2 (2025-12-04)
- 🔧 Исправлены баги в генерации XML документов
v1.1.1 (2025-11-23)
- ➕ Поддержка генерации XML с несколькими документами в одном Body
- ➕ Новый метод генерации для массива документов:
$generator->generate([$doc1, $doc2]) - 📝 Пример использования множественных документов в
examples/invoice-out-multiple.php - 🔧 Исправлены ошибки в DocumentGenerator при работе с несколькими документами
- ⚙️ Оптимизирована архитектура для поддержки множественных документов
v1.1.0 (2025-11-09)
- ✅ Полная готовность к публикации на GitHub
- 📚 Добавлено руководство по вкладу в проект (CONTRIBUTING.md)
- 📝 Обновлён CHANGELOG.md в формате Keep a Changelog
- ⚙️ Оптимизирован composer.json для публикации
- 🔒 Добавлен composer.lock для стабильных зависимостей
- ✅ Подтверждено соответствие PSR-12
Быстрый старт
<?php require_once __DIR__ . '/vendor/autoload.php'; use MaxiStyle\EnterpriseData\DocumentGenerator; use MaxiStyle\EnterpriseData\Entities; // Создаем организацию $organization = new Entities\Organization(); $organization->set('name', 'Торговый дом "Комплексный" ООО') ->set('shortName', 'ООО "Торговый дом "Комплексный"') ->set('fullName', 'Общество с ограниченной ответственностью "Торговый дом "Комплексный"') ->set('inn', '7799434926') ->set('kpp', '779901001'); // Создаем контрагента $counterparty = new Entities\Organization(); $counterparty->set('name', 'Этнопарк Перун') ->set('shortName', 'ООО "Этнопарк "Перун"') ->set('fullName', 'ООО "Этнопарк "Перун"') ->set('inn', '5099891610') ->set('kpp', '509901001'); // Валюта $currency = new Entities\Currency(); // Создаем счёт $invoice = new Entities\InvoiceOut(); $invoice->set('number', '0000-000524') ->set('date', new DateTime()) ->set('organization', $organization) ->set('currency', $currency) ->set('amount', 2010) ->set('counterparty', $counterparty); // Генерируем XML $generator = new DocumentGenerator(); $xml = $generator->generate($invoice); // Сохраняем в файл $generator->saveToFile($xml, 'invoice.xml'); echo 'Счёт успешно сформирован!';
Полный пример с товарами
Посмотрите файл examples/invoice-out.php для полного примера с товарами, банковскими реквизитами и договорами.
Структура проекта
src/
├── Builders/ # Конструкторы документов
│ ├── ActInBuilder.php # Построитель акта от поставщика
│ ├── ActOutBuilder.php # Построитель акта поставщику
│ ├── DocumentBuilder.php # Базовый построитель документов
│ ├── DocumentBuilderInterface.php # Интерфейс построителей
│ ├── InvoiceInBuilder.php # Построитель счёта от поставщика
│ └── InvoiceOutBuilder.php # Построитель счёта покупателю
├── Entities/ # Сущности данных
│ ├── Act.php # Базовый класс акта
│ ├── ActIn.php # Акт от поставщика
│ ├── ActOut.php # Акт поставщику
│ ├── Bank.php # Банк
│ ├── BankAccount.php # Банковский счёт
│ ├── Contract.php # Договор
│ ├── Currency.php # Валюта
│ ├── Department.php # Подразделение
│ ├── Document.php # Базовый класс документа
│ ├── Invoice.php # Базовый класс счёта
│ ├── InvoiceIn.php # Счёт от поставщика
│ ├── InvoiceOut.php # Счёт покупателю
│ ├── Nomenclature.php # Номенклатура
│ ├── Order.php # Заказ
│ ├── Organization.php # Организация
│ ├── Product.php # Товар
│ ├── ProductGroup.php # Группа товаров
│ ├── Responsible.php # Ответственное лицо
│ ├── Service.php # Услуга
│ ├── UnitOfMeasure.php # Единица измерения
│ └── Warehouse.php # Склад
├── Exception/ # Исключения
│ ├── UnsupportedDocumentException.php # Исключение для неподдерживаемых документов
│ └── XMLGenerationException.php # Исключение при генерации XML
└── DocumentGenerator.php # Основной класс генератора документов
Поддерживаемые документы
Счёт покупателю (InvoiceOut)
Генерирует XML в формате Документ.ЗаказКлиента со следующими элементами:
- Ключевые свойства: дата, номер, организация
- Валюта: код и наименование
- Сумма: общая сумма документа
- Контрагент: покупатель
- Данные взаиморасчетов: договор, валюта расчётов
- Банковский счёт организации: реквизиты для оплаты
- Товары: детальный список номенклатуры с ценами и НДС
Счёт от поставщика (InvoiceIn)
Генерирует XML в формате Документ.ЗаказПоставщику со следующими элементами:
- Ключевые свойства: дата, номер, организация-поставщик
- Валюта: код и наименование
- Сумма: общая сумма счёта
- Контрагент: поставщик
- Товары и услуги: детальный список с ценами и НДС
Акт от поставщика (ActIn)
Генерирует XML в формате Документ.ПоступлениеТоваровУслуг со следующими элементами:
- Ключевые свойства: дата, номер, организация-получатель
- Контрагент: поставщик товаров/услуг
- Склад: место хранения товаров
- Товары: детальный список с количеством и ценами
- Подразделение: подразделение получателя
Акт поставщику (ActOut)
Генерирует XML в формате Документ.РеализацияТоваровУслуг со следующими элементами:
- Ключевые свойства: дата, номер, организация-продавец
- Контрагент: покупатель товаров/услуг
- Склад: место отгрузки товаров
- Товары: детальный список с количеством и ценами
- Подразделение: подразделение-источник
Качество кода
Проект соответствует стандартам PSR-12 и проходит автоматическую проверку:
# Проверка соответствия PSR-12 ./vendor/bin/phpcs --standard=PSR12 src/ # Автоматическое исправление ./vendor/bin/phpcbf --standard=PSR12 src/ # Статический анализ кода ./vendor/bin/phpstan analyse src/ --level=8
Статус проекта
- ✅ PSR-12 - Соответствие стандартам кодирования
- ✅ PHPStan Level 8 - Статический анализ кода
- ✅ GitHub Ready - Готовность к публикации
- ✅ Packagist Ready - Совместимость с пакетным менеджером
Лицензия
MIT License
Автор
MaxiStyle - tiranmax@yandex.ru
Примеры
В папке examples/ находятся готовые примеры использования:
invoice-out.php- пример генерации счёта с товарамиinvoice-out-multiple.php- пример генерации нескольких документов в одном XMLinvoice-out-service.php- пример генерации счёта на услугиinvoice-in.php- пример генерации счёта от поставщикаinvoice-out.xml- сгенерированный XML файл счётаinvoice-out-multiple.xml- сгенерированный XML файл с несколькими документамиinvoice-out-service.xml- сгенерированный XML файл счёта на услуги
Вклад в проект
Мы приветствуем вклад в развитие проекта! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения подробной информации о том, как внести свой вклад.
Быстрый процесс вклада:
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Убедитесь, что код проходит проверки PSR-12
- Создайте Pull Request
Версионирование
Проект следует Semantic Versioning. Детальные изменения отслеживаются в CHANGELOG.md.
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-09