Skip to main content

Autonomous system for generating structured JSON contracts from 1C:Enterprise configurations

Project description

🚀 OneC Contract Generator

Система генерации контрактов метаданных 1С

Полностью автономная система для генерации структурированных JSON-контрактов из конфигураций 1С, включая контракты метаданных объектов, форм и модулей.

📋 Возможности

  • 🎯 Контракты метаданных - структурированное описание объектов (справочники, документы, обработки)
  • 📋 Контракты форм - архитектура форм с элементами управления и атрибутами
  • 🔧 Контракты модулей - описание модулей объектов с функциями и процедурами
  • 🔍 Группированные логи - структурированный вывод результатов с группировкой по категориям
  • 📊 Статистика и отчеты - анализ структуры конфигурации
  • 🚀 Интерактивный режим - пошаговый мастер с подсказками
  • Командный режим - автоматизация через аргументы

🏗️ Структура проекта

onec-contract-generator/
├── src/                                    # Исходный код
│   ├── core/                               # Основные компоненты
│   │   ├── launcher.py                     # 🚀 Единый запускатор
│   │   ├── metadata_generator.py           # 📋 Генератор контрактов метаданных
│   │   ├── form_generator.py               # 📝 Генератор контрактов форм
│   │   └── module_generator.py             # 🔧 Генератор контрактов модулей
│   ├── utils/                              # Утилиты
│   └── parsers/                            # Парсеры
├── scripts/                                # Скрипты запуска
│   ├── generate.py                         # 🚀 Главный скрипт
│   ├── analyze.py                          # 📊 Скрипт анализа
│   └── test.py                             # 🧪 Скрипт тестирования
├── tests/                                  # Тесты
├── docs/                                   # Документация
├── examples/                               # Примеры
├── old/                                    # Резервная копия старого функционала
└── README.md                               # Эта документация

🚀 Быстрый старт

Требования

Python 3.7+

Установка

# Клонируйте репозиторий
git clone <repository-url>
cd onec-contract-generator

# Или скопируйте папку в ваш проект
cp -r onec-contract-generator /path/to/your/project/

Использование

Интерактивный режим (рекомендуется)

python scripts/generate.py

Запустится пошаговый мастер:

  1. 📁 Выбор директории конфигурации
  2. 📄 Выбор файла отчета
  3. 📂 Выбор выходной директории
  4. 🔧 Выбор компонентов для генерации
  5. 🎯 Подтверждение и запуск

Командный режим

python scripts/generate.py --auto \
  --conf-dir "C:\YourProject\YourConfig\conf_files" \
  --report-path "C:\YourProject\YourConfig\conf_report\ОтчетПоКонфигурации.txt" \
  --output-dir "C:\YourProject\YourConfig\metadata_contracts"

Анализ контрактов

# Статистика
python scripts/analyze.py --action stats

# Поиск
python scripts/analyze.py --action search --query "ДокументыПредприятия"

# Валидация
python scripts/analyze.py --action validate

# Экспорт отчета
python scripts/analyze.py --action report --output analysis.md

Тестирование

python scripts/test.py

📊 Структура контрактов

Контракт метаданных

{
  "metadata_type": "Object",
  "name": "Справочники.ДокументыПредприятия",
  "type": "Справочник",
  "comment": "Справочник документов предприятия",
  "structure": {
    "attributes_count": 3,
    "tabular_sections_count": 1,
    "attributes": [
      {
        "name": "Наименование",
        "type": "Строка",
        "path": "Справочники.ДокументыПредприятия.Реквизиты.Наименование"
      }
    ],
    "tabular_sections": [
      {
        "name": "Состав",
        "type": "ТабличнаяЧасть",
        "attributes": []
      }
    ]
  },
  "generated_at": "C:\\YourProject\\onec-contract-generator",
  "source": "Text Report"
}

Контракт формы

{
  "metadata_type": "Form",
  "name": "рлф_ФормаСпискаСПапками",
  "synonym": "Форма списка с папками (Рольф)",
  "comment": "Форвард; Мазалов Е.А.; 04.02.2025; 92558",
  "form_type": "Managed",
  "structure": {
    "elements_count": 0,
    "attributes_count": 0,
    "elements": [],
    "attributes": []
  },
  "generated_at": "C:\\YourProject\\onec-contract-generator",
  "source": "XML Form Description"
}

Контракт модуля

{
  "metadata_type": "Module",
  "name": "ДокументыПредприятия_ModuleContract",
  "module_type": "ObjectModule",
  "functions": [
    {
      "name": "ПриСозданииНаСервере",
      "parameters": [],
      "return_type": "void"
    }
  ],
  "procedures": [
    {
      "name": "ОбработкаЗаполнения",
      "parameters": [
        {
          "name": "Источник",
          "type": "СправочникСсылка.ДокументыПредприятия"
        }
      ]
    }
  ],
  "generated_at": "C:\\YourProject\\onec-contract-generator",
  "source": "XML Module Description"
}

🎯 Преимущества

Чистая архитектура

  • Логичная организация файлов
  • Модульная структура
  • Разделение ответственности

Простота использования

  • Интерактивный мастер
  • Простые команды запуска
  • Автоматическое определение путей

Профессиональность

  • Стандартная структура Python проекта
  • Подробная документация
  • Полное тестирование

Автономность

  • Не требует установки зависимостей
  • Работает на любой платформе
  • Может быть скопирован в любой проект

Улучшенное логирование

  • Группировка логов по категориям
  • Структурированный вывод результатов
  • Сводки по обработке

🔧 Настройка

Переменные окружения

# Для Windows (кодировка)
set PYTHONIOENCODING=utf-8

# Для Linux/macOS
export PYTHONIOENCODING=utf-8

Структура входных данных

project/
├── conf_files/                    # Файлы конфигурации
│   ├── Catalogs/
│   ├── Documents/
│   └── Forms/
├── conf_report/                   # Отчеты конфигурации
│   └── ОтчетПоКонфигурации.txt
└── onec-contract-generator/       # Система генерации

📚 Документация

🧪 Тестирование

# Запуск всех тестов
python scripts/test.py

# Запуск конкретных тестов
python -m pytest tests/ -v

# Запуск с покрытием
python -m pytest tests/ --cov=src

🚨 Устранение проблем

Проблема: Кодировка в Windows

# Решение: Установить переменную окружения
set PYTHONIOENCODING=utf-8
python scripts/generate.py

Проблема: Пути к файлам

# Решение: Использовать абсолютные пути
python scripts/generate.py --auto \
  --conf-dir "C:\absolute\path\to\conf_files" \
  --report-path "C:\absolute\path\to\report.txt"

Проблема: Отсутствие файлов

# Решение: Проверить структуру проекта
ls -la
python scripts/test.py

Проблема: Ошибки парсинга форм

# Решение: Проверить XML файлы форм
# Система автоматически группирует ошибки в логах

📊 Результаты тестирования

Успешно протестировано на реальных данных:

  • Конфигурация: YourProject (33MB отчет)
  • Модули: 3,451 объект обработан
  • Формы: Множество форм создано
  • Метаданные: Структурированные контракты

📋 Группировка логов:

  • info: Информационные сообщения
  • success: Успешно обработанные файлы
  • warning: Предупреждения
  • error: Ошибки обработки
  • summary: Сводки по результатам

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

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Добавьте тесты
  5. Создайте Pull Request

📄 Лицензия

MIT License - см. файл LICENSE для подробностей.

🆘 Поддержка

При возникновении проблем:

  1. Запустите тесты: python scripts/test.py
  2. Проверьте документацию в папке docs/
  3. Создайте Issue в репозитории

Удачной работы с контрактами метаданных! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

onec_contract_generator-2.1.1.tar.gz (47.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

onec_contract_generator-2.1.1-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file onec_contract_generator-2.1.1.tar.gz.

File metadata

  • Download URL: onec_contract_generator-2.1.1.tar.gz
  • Upload date:
  • Size: 47.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for onec_contract_generator-2.1.1.tar.gz
Algorithm Hash digest
SHA256 ad0c1dd0dec0105e67eab7cd442900076eb87623e8bbbb0754686468d67b0e26
MD5 e8fc4c2598745b4e69e4f148e2d2287f
BLAKE2b-256 780d85fc8fcdd72360be9f1d6cc373c46e2b5b6b2a6c5a87e1aeeb56919856bd

See more details on using hashes here.

File details

Details for the file onec_contract_generator-2.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for onec_contract_generator-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7c14fc5ea7bdb60f4b783c6be4b13dadc7515952bd0f66454a1fdd58f48f06be
MD5 09d1b66940a02872b3e16c820a894a55
BLAKE2b-256 6e7c8f752c3a7ffde4443d0189070abb5e2f42c903f3996e37d59c34963cdfbc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page