Skip to main content

🚀 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С:Предприятие

Metadata

Release files for onec-contract-generator 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for onec-contract-generator 2.2.0
File Size Uploaded
onec_contract_generator-2.2.0.tar.gz 51.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for onec-contract-generator 2.2.0
File Interpreter ABI Platform
onec_contract_generator-2.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 76.5 kB

Release files / onec_contract_generator-2.2.0.tar.gz

Download URL onec_contract_generator-2.2.0.tar.gz
Size 51.5 kB
Tags Source
SHA-256 checksum
How to use checksums
03d646befd10ed98cf190c686830abf64cab11099a771dc11e0207be9764ccd9
BLAKE2b-256 checksum
How to use checksums
f2083973fad06dee27874f8ea82f241af10327b9958b555cfbb0604f230eb3f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / onec_contract_generator-2.2.0-py3-none-any.whl

Download URL onec_contract_generator-2.2.0-py3-none-any.whl
Size 25.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3be28c454677ae48a59d3d192595c4ac418fd3c0db7cbe69cb28dc96cfb9f4b7
BLAKE2b-256 checksum
How to use checksums
acae3318edccf8bc41dc867cba1f81868e104f282a4115395236b098c782fbd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 release files

2.1.1

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page