maxistyle/1c-enterprise-data 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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С.

Version PHP License PSR-12

Возможности

  • Генерация 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 - пример генерации нескольких документов в одном XML
  • invoice-out-service.php - пример генерации счёта на услуги
  • invoice-in.php - пример генерации счёта от поставщика
  • invoice-out.xml - сгенерированный XML файл счёта
  • invoice-out-multiple.xml - сгенерированный XML файл с несколькими документами
  • invoice-out-service.xml - сгенерированный XML файл счёта на услуги

Вклад в проект

Мы приветствуем вклад в развитие проекта! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения подробной информации о том, как внести свой вклад.

Быстрый процесс вклада:

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Убедитесь, что код проходит проверки PSR-12
  5. Создайте Pull Request

Версионирование

Проект следует Semantic Versioning. Детальные изменения отслеживаются в CHANGELOG.md.

统计信息

  • 总下载量: 11
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-11-09