Metadata-Version: 2.4
Name: onec-contract-generator
Version: 2.1.1
Summary: Autonomous system for generating structured JSON contracts from 1C:Enterprise configurations
Home-page: https://github.com/onec-contract-generator/onec-contract-generator
Author: 1C Contract Generator Team
Author-email: 1C Contract Generator Team <support@onec-contract-generator.dev>
Maintainer-email: 1C Contract Generator Team <support@onec-contract-generator.dev>
License-Expression: MIT
Project-URL: Homepage, https://github.com/onec-contract-generator/onec-contract-generator
Project-URL: Documentation, https://github.com/onec-contract-generator/onec-contract-generator#readme
Project-URL: Repository, https://github.com/onec-contract-generator/onec-contract-generator
Project-URL: Bug Tracker, https://github.com/onec-contract-generator/onec-contract-generator/issues
Project-URL: Changelog, https://github.com/onec-contract-generator/onec-contract-generator/blob/main/CHANGELOG.md
Keywords: 1c,enterprise,metadata,contracts,generation,analysis,json,xml,documentation
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Office/Business :: Financial :: Accounting
Classifier: Topic :: Text Processing :: Markup :: XML
Classifier: Topic :: Software Development :: Documentation
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: pytest>=6.0.0; extra == "dev"
Requires-Dist: pytest-cov>=2.10.0; extra == "dev"
Requires-Dist: black>=21.0.0; extra == "dev"
Requires-Dist: flake8>=3.8.0; extra == "dev"
Requires-Dist: mypy>=0.800; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=4.0.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# 🚀 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                               # Эта документация
```

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

### Требования

```bash
Python 3.7+
```

### Установка

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

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

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

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

```bash
python scripts/generate.py
```

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

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

```bash
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"
```

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

```bash
# Статистика
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
```

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

```bash
python scripts/test.py
```

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

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

```json
{
  "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"
}
```

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

```json
{
  "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"
}
```

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

```json
{
  "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 проекта
- Подробная документация
- Полное тестирование

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

### ✅ **Улучшенное логирование**
- Группировка логов по категориям
- Структурированный вывод результатов
- Сводки по обработке

## 🔧 Настройка

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

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

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

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

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

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

- [📖 Руководство по использованию](docs/USAGE.md)
- [🔧 API документация](docs/API.md) *(в разработке)*
- [💡 Примеры использования](docs/EXAMPLES.md) *(в разработке)*

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

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

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

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

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

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

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

### Проблема: Отсутствие файлов
```bash
# Решение: Проверить структуру проекта
ls -la
python scripts/test.py
```

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

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

### ✅ **Успешно протестировано на реальных данных:**
- **Конфигурация**: YourProject (33MB отчет)
- **Модули**: 3,451 объект обработан
- **Формы**: Множество форм создано
- **Метаданные**: Структурированные контракты

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

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

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

## 📄 Лицензия

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

## 🆘 Поддержка

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

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

---

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