Skip to main content

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

Project description

🚀 OneC Contract Generator

PyPI version Python 3.7+ License: MIT

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

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

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

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

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

Установка

# Установка с PyPI
pip install onec-contract-generator

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

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

onec-contract-generate

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

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

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

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

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

# Статистика
onec-contract-analyze --action stats

# Поиск
onec-contract-analyze --action search --query "ДокументыПредприятия"

# Валидация
onec-contract-analyze --action validate

# Экспорт отчета
onec-contract-analyze --action report --output analysis.md

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

# Запуск тестов
onec-contract-test

# Или с pytest
pytest tests/

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

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                             # 🧪 Скрипт тестирования
│   └── publish.py                          # 📦 Скрипт публикации на PyPI
├── tests/                                  # Тесты
├── docs/                                   # Документация
├── examples/                               # Примеры
├── old/                                    # Резервная копия старого функционала
├── setup.py                                # Конфигурация пакета
├── pyproject.toml                          # Современная конфигурация
├── requirements.txt                        # Зависимости
├── requirements-dev.txt                    # Зависимости для разработки
└── README.md                               # Эта документация

📦 Установка для разработки

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

# Установка в режиме разработки
pip install -e ".[dev]"

# Или установка зависимостей вручную
pip install -r requirements-dev.txt

🛠️ Ручной запуск без pip

Если вы хотите запустить генератор без установки через pip, используйте прямые скрипты:

Клонирование и настройка

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

# Установите зависимости (если нужно)
pip install -r requirements.txt

Запуск через Python скрипты

# Основной генератор
python scripts/generate.py

# Или с параметрами
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/test.py

Запуск через модули напрямую

# Запуск основного модуля
python -m src.core.launcher

# Или с параметрами
python -m src.core.launcher --auto \
  --conf-dir "C:\YourProject\YourConfig\conf_files" \
  --report-path "C:\YourProject\YourConfig\conf_report\ОтчетПоКонфигурации.txt" \
  --output-dir "C:\YourProject\YourConfig\metadata_contracts"

Запуск отдельных компонентов

# Только генератор метаданных
python -c "
from src.core.metadata_generator import MetadataGenerator
generator = MetadataGenerator('output_dir')
generator.generate('path/to/report.txt')
"

# Только генератор форм
python -c "
from src.core.form_generator import FormGenerator
generator = FormGenerator('output_dir')
generator.generate('path/to/conf_files')
"

📁 Поддерживаемые типы объектов 1С

Основные объекты

  • Справочники - справочные данные
  • Документы - документооборот
  • Отчеты - отчетные формы
  • Обработки - обработки данных

Регистры

  • РегистрыСведений - регистры сведений
  • РегистрыНакопления - регистры накопления
  • РегистрыБухгалтерии - регистры бухгалтерии
  • РегистрыРасчета - регистры расчета

Планы

  • ПланыВидовХарактеристик - планы видов характеристик
  • ПланыОбмена - планы обмена
  • ПланыСчетов - планы счетов
  • ПланыВидовРасчета - планы видов расчета

Общие объекты

  • Перечисления - перечисления
  • ОбщиеМодули - общие модули
  • ОбщиеКартинки - общие картинки
  • ОбщиеКоманды - общие команды

Сервисы

  • HTTPСервисы - HTTP сервисы
  • WebСервисы - Web сервисы
  • XDTOПакеты - XDTO пакеты

📊 Примеры выходных данных

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

{
  "type": "Справочник",
  "name": "Номенклатура",
  "comment": "Номенклатура товаров и услуг",
  "properties": [
    {
      "name": "Код",
      "type": "Строка",
      "length": 9,
      "comment": "Код номенклатуры"
    },
    {
      "name": "Наименование",
      "type": "Строка",
      "length": 150,
      "comment": "Наименование номенклатуры"
    }
  ],
  "search_info": {
    "type": "Справочник",
    "category": "ОсновныеОбъекты",
    "full_name": "Справочник_Номенклатура",
    "search_keywords": ["Справочник", "Номенклатура", "товары", "услуги"],
    "object_short_name": "Номенклатура"
  }
}

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

{
  "form_type": "ФормаЭлемента",
  "object_name": "Справочник.Номенклатура",
  "form_name": "ФормаЭлементаФорма",
  "controls": [
    {
      "name": "Код",
      "type": "Поле",
      "data_path": "Объект.Код",
      "title": "Код"
    },
    {
      "name": "Наименование",
      "type": "Поле",
      "data_path": "Объект.Наименование",
      "title": "Наименование"
    }
  ]
}

🔧 Конфигурация

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

  • ONEC_DEBUG - включить отладочный режим
  • ONEC_LOG_LEVEL - уровень логирования (INFO, WARNING, ERROR)

Параметры командной строки

  • --auto - автоматический режим
  • --conf-dir - директория конфигурации
  • --report-path - путь к отчету
  • --output-dir - выходная директория
  • --skip-metadata - пропустить метаданные
  • --skip-forms - пропустить формы
  • --skip-modules - пропустить модули

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

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

# Запуск всех тестов
pytest

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

# Запуск конкретного теста
pytest tests/test_launcher.py::test_main_function

# Запуск с подробным выводом
pytest -v

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

  1. Форкните репозиторий
  2. Создайте ветку для новой функции (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.

🆘 Поддержка

📈 Статистика проекта

  • Версия: 2.2.0
  • Python: 3.7+
  • Лицензия: MIT
  • Статус: Активная разработка
  • PyPI: onec-contract-generator

Создано с ❤️ для сообщества 1С:Предприятие

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.2.0.tar.gz (51.5 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.2.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onec_contract_generator-2.2.0.tar.gz
  • Upload date:
  • Size: 51.5 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.2.0.tar.gz
Algorithm Hash digest
SHA256 03d646befd10ed98cf190c686830abf64cab11099a771dc11e0207be9764ccd9
MD5 91e9ddfba1d8f29ff841215fe41d228b
BLAKE2b-256 f2083973fad06dee27874f8ea82f241af10327b9958b555cfbb0604f230eb3f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for onec_contract_generator-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3be28c454677ae48a59d3d192595c4ac418fd3c0db7cbe69cb28dc96cfb9f4b7
MD5 50bf9bcdb5f321aeb0bd4fa987d9da0f
BLAKE2b-256 acae3318edccf8bc41dc867cba1f81868e104f282a4115395236b098c782fbd2

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