# Подключение EDT / Designer export

Offline-анализ BSL, метаданных и форм из выгрузки EDT или XML-выгрузки конфигуратора.

## Prerequisites

- 1C:EDT 2023+ или Конфигуратор с выгрузкой в файлы.
- Каталог проекта EDT или XML-выгрузка на диске, доступная процессу gateway.
- Node.js gateway с правами чтения каталога (write — только dev/test + approval).
- Опционально: CLI 1cv8 / 1cedtcli для export/import (Beta workflow).

## Пошаговая настройка

### 1. Выгрузка из EDT

```bash
# В EDT: Configuration → Export configuration to files
# Результат: каталог с src/, Configuration.xml, ...
export EDT_EXPORT_PATH=/opt/1c-projects/my-config
```

### 2. Выгрузка из Designer (batch)

```bash
export ONEC_DESIGNER_EXECUTABLE="/opt/1cv8/x86_64/8.3.24.1234/1cv8"
export ONEC_CLI_ALLOWED_EXECUTABLES="$ONEC_DESIGNER_EXECUTABLE"
export ONEC_DESIGNER_TIMEOUT_MS=600000

# Tool export_1c_configuration (dev/test, requires approval):
# confirmed, businessReason, approvalId, idempotencyKey
```

### 3. Профиль `edt-export`

```json
{
  "profileId": "dev-edt-main",
  "type": "edt-export",
  "environment": "dev",
  "edtExportPath": "/opt/1c-projects/my-config",
  "gitPath": "/opt/1c-projects/my-config"
}
```

`gitPath` опционален; если совпадает с repo — включается Git metadata (blame, diff).

### 4. Индексация BSL Context Engine

После создания профиля gateway строит индекс модулей при первом вызове:

- `discover_1c_context`
- `bsl_search`
- `bsl_get_module`

Индекс кэшируется в `ONEC_MCP_DATA_DIR` (per profile).

### 5. Связка с файловой ИБ (dev workflow)

Комбинируйте `edt-export` + `file-infobase` в одном project: код из export, runtime — из test base.

## Copy-ready config (CLI allowlist)

```bash
export ONEC_CLI_ALLOWED_EXECUTABLES="/opt/1cv8/x86_64/8.3.24.1234/1cv8:/opt/1cedt/1cedtcli"
export ONEC_EDT_EXECUTABLE="/opt/1cedt/1cedtcli"
export ONEC_EDT_TIMEOUT_MS=600000
export ONEC_MCP_DATA_DIR=.data
npm run dev:gateway
```

Write-tools (`run_edt_validation`, `import_1c_configuration_to_test`) требуют:

- `confirmed: true`, `businessReason`, `approvalId`, `idempotencyKey`
- `changeSummary`, `rollbackPlan` для import/load
- `dryRun: true` для preflight без запуска процесса

## Проверка tools/list

Для `edt-export` / `dev`:

- Read: `bsl_search`, `bsl_get_symbol`, `form_get_context`, `analyze_1c_impact`
- Dev: `propose_1c_code_patch`, `run_bsl_checks`, `run_edt_validation`
- Import/build: только `test` env + approval

Production-профиль на чистом export без live base — read-only.

## Первый тестовый prompt

```
Переключись на профиль dev-edt-main. Найди через bsl_search процедуры с текстом «ПроверитьЗадолженность».
Для первого результата вызови bsl_get_symbol и верни директиву компиляции, параметры и найденные запросы 1С.
```

## Типовые ошибки

| Ошибка | Причина | Решение |
|--------|---------|---------|
| `edtExportPath not found` | Неверный путь | Абсолютный path, права read |
| Пустой индекс | Неполная выгрузка | Перевыгрузите Configuration |
| `executable not in allowlist` | CLI не разрешён | Добавьте в `ONEC_CLI_ALLOWED_EXECUTABLES` |
| `approval required` | Write без approval | `approval.create` → `approvalId` |
| Timeout EDT | Большая конфигурация | Увеличьте `ONEC_EDT_TIMEOUT_MS` |

## Security warning

- Export может содержать коммерческую логику и PII в комментариях — не публикуйте `.data` и export наружу.
- Import/load в базу — **только test**, never production без отдельного security review.
- Caller не передаёт raw executable/args — gateway выбирает из env allowlist.
- Пути patch/import — только относительные к `edtExportPath` или `gitPath` профиля.

## Related docs

- [GIT_REPO_CONNECTION.md](./GIT_REPO_CONNECTION.md) — Git diff и history
- [MCP_CONNECTION.md](./MCP_CONNECTION.md) — EDT CLI, Agent Result Loop
- [QUICK_START.md](./QUICK_START.md) — первый запуск
- [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) — индекс и diagnostics
