🚀 OneC Contract Generator
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
Запустится пошаговый мастер:
- 📁 Выбор директории конфигурации
- 📄 Выбор файла отчета
- 📂 Выбор выходной директории
- 🔧 Выбор компонентов для генерации
- 🎯 Подтверждение и запуск
Командный режим
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- пропустить модули
📚 Документация
- 📖 Полная документация
- 🚀 Руководство по использованию
- 📋 Примеры использования
- 🔧 API документация
- 🛠️ Руководство разработчика
- 📦 Руководство по публикации
🧪 Тестирование
# Запуск всех тестов
pytest
# Запуск с покрытием
pytest --cov=src
# Запуск конкретного теста
pytest tests/test_launcher.py::test_main_function
# Запуск с подробным выводом
pytest -v
🤝 Вклад в проект
- Форкните репозиторий
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
📄 Лицензия
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
🆘 Поддержка
- Issues: GitHub Issues
- Email: support@onec-contract-generator.dev
- Документация: Полная документация
📈 Статистика проекта
- Версия: 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)
| File | Size | Uploaded | |
|---|---|---|---|
| onec_contract_generator-2.2.0.tar.gz | 51.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|