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
- ➕ Реализация документа "Акт от поставщика" (ActIn)
- ➕ Реализация документа "Акт поставщику" (ActOut)
- 🔧 Исправлены баги в генерации XML документов
- ➕ Поддержка генерации XML с несколькими документами в одном Body
- ➕ Новый метод генерации для массива документов:
$generator->generate([$doc1, $doc2]) - 📝 Пример использования множественных документов в
examples/invoice-out-multiple.php - 🔧 Исправлены ошибки в DocumentGenerator при работе с несколькими документами
- ⚙️ Оптимизирована архитектура для поддержки множественных документов
- ✅ Полная готовность к публикации на 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 # Основной класс генератора документов
Генерирует XML в формате Документ.ЗаказКлиента со следующими элементами:
- Ключевые свойства: дата, номер, организация
- Валюта: код и наименование
- Сумма: общая сумма документа
- Контрагент: покупатель
- Данные взаиморасчетов: договор, валюта расчётов
- Банковский счёт организации: реквизиты для оплаты
- Товары: детальный список номенклатуры с ценами и НДС
Генерирует XML в формате Документ.ЗаказПоставщику со следующими элементами:
- Ключевые свойства: дата, номер, организация-поставщик
- Валюта: код и наименование
- Сумма: общая сумма счёта
- Контрагент: поставщик
- Товары и услуги: детальный список с ценами и НДС
Генерирует XML в формате Документ.ПоступлениеТоваровУслуг со следующими элементами:
- Ключевые свойства: дата, номер, организация-получатель
- Контрагент: поставщик товаров/услуг
- Склад: место хранения товаров
- Товары: детальный список с количеством и ценами
- Подразделение: подразделение получателя
Генерирует 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.