---
name: 1c-edt-tools
description: "1C:Enterprise (1С:Предприятие) development tools via EDT MCP server — BSL code analysis, metadata inspection, module navigation, error checking, debugging, configuration management. Use when working with 1C code, BSL modules, 1C metadata, 1C queries, 1C forms, or any 1C:Enterprise development task."
---

# 1C:EDT MCP Tools — Reference Guide

MCP-сервер **1c-edt** предоставляет прямой доступ к семантическому индексу EDT (BM model), платформенной документации, проверкам и управлению проектом. Все инструменты работают через живой экземпляр EDT и используют реальный AST/семантику, а не текстовый поиск.

## When to Use

Используй инструменты 1c-edt когда:
- Нужно прочитать исходный код модуля или отдельного метода
- Нужно понять структуру модуля (список процедур/функций) без чтения всего файла
- Нужно найти все вызывающие места метода (call hierarchy)
- Нужно найти все ссылки на объект метаданных (references)
- Нужно проверить ошибки проекта или конкретного объекта
- Нужна документация по типам платформы (ТаблицаЗначений, Массив и т.д.)
- Нужно получить автодополнение (content assist) в конкретной позиции кода
- Нужно найти код по тексту/регулярному выражению во всех модулях
- Нужно получить свойства объектов метаданных или конфигурации
- Нужно обновить базу данных или запустить отладку

## Prerequisites Check

Перед первым использованием любого инструмента проверь доступность MCP-сервера — вызови любой инструмент EDT-MCP (например `get_edt_version`).
Если сервер **не отвечает** — сообщи пользователю:
> EDT MCP сервер недоступен. Для использования инструментов анализа кода необходимо:
> 1. Запустить 1C:EDT с открытым workspace
> 2. Убедиться, что плагин EDT MCP Server установлен и активен (порт 8765)

Не пытайся вызывать инструменты без работающего сервера.

## Important

- Параметр `projectName` — имя проекта в EDT workspace (например `РНК_ЕРПУХ` или `РНК_ЕРПУХ.Расширение1`)
- Параметр `modulePath` — путь относительно папки `src/` проекта (например `CommonModules/Пользователи/Module.bsl`)
- Параметр `objectFqn` — полное квалифицированное имя (например `Document.SalesOrder`, `Catalog.Products`, `CommonModule.Common`). Поддерживает русские имена типов: `Справочник.Номенклатура`, `Документ.ЗаказКлиента`, `ОбщийМодуль.ОбщегоНазначения`
- Все инструменты требуют предварительной загрузки через `ToolSearch` с запросом `select:mcp__1c-edt__<tool_name>`

---

## Tools by Category

### 1. Code Reading, Navigation and Editing

#### `read_module_source` — Чтение исходного кода модуля
Читает весь BSL-файл или диапазон строк. Возвращает код с номерами строк.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `modulePath` | да | Путь к BSL-файлу (`CommonModules/MyModule/Module.bsl`) |
| `startLine` | нет | Начальная строка (1-based) |
| `endLine` | нет | Конечная строка (1-based, включительно) |

**Совет:** Для больших модулей используй `startLine`/`endLine` вместо чтения целиком.

#### `write_module_source` — Запись BSL-кода в модуль
Записывает BSL-код в модули объектов метаданных с автоматической проверкой синтаксиса. Поддерживает три режима: поиск и замена фрагмента, полная замена модуля, добавление в конец. Модуль можно указать либо через `modulePath`, либо через `objectName` + `moduleType`.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `modulePath` | нет* | Путь от `src/` (`Documents/MyDoc/ObjectModule.bsl`). Альтернатива `objectName` + `moduleType` |
| `objectName` | нет* | Полное имя объекта (`Document.MyDoc`, `CommonModule.MyModule`). Поддерживает русские имена |
| `moduleType` | нет | Тип модуля: `ObjectModule` (по умолчанию), `ManagerModule`, `FormModule`, `CommandModule`, `RecordSetModule` |
| `source` | да | BSL-код: для `searchReplace` — новый код замены, для `replace` — полное содержимое, для `append` — добавляемый код |
| `oldSource` | нет** | Существующий код для замены (обязателен для `searchReplace`). Должен совпадать ровно в одном месте файла |
| `mode` | нет | Режим: `searchReplace` (по умолчанию), `replace`, `append` |
| `formName` | нет | Имя формы (обязательно при `moduleType=FormModule`) |
| `commandName` | нет | Имя команды (обязательно при `moduleType=CommandModule`) |
| `skipSyntaxCheck` | нет | Пропустить проверку синтаксиса (по умолчанию false). Проверяет парность `Процедура/КонецПроцедуры`, `Если/КонецЕсли` и т.д. |

**Преимущество:** автоматическая проверка синтаксиса после записи — ошибки обнаруживаются сразу.

#### `read_method_source` — Чтение одного метода
Извлекает код конкретной процедуры/функции по имени. Не нужно читать весь модуль.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `modulePath` | да | Путь к BSL-файлу |
| `methodName` | да | Имя процедуры/функции (регистронезависимо) |

#### `get_module_structure` — Структура модуля
Возвращает список всех процедур/функций с сигнатурами, номерами строк, регионами, директивами компиляции и флагом Экспорт. Позволяет понять модуль без чтения всего кода.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `modulePath` | да | Путь к BSL-файлу |
| `includeVariables` | нет | Включить объявления переменных модуля (по умолчанию false) |
| `includeComments` | нет | Включить doc-комментарии методов (по умолчанию false) |

#### `get_method_call_hierarchy` — Иерархия вызовов (callers/callees)
Находит вызывающие (callers) или вызываемые (callees) методы через семантический индекс EDT (AST, не текстовый поиск). Аналог Call Hierarchy в IDE.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `modulePath` | да | Путь к BSL-файлу, где определён метод |
| `methodName` | да | Имя процедуры/функции (регистронезависимо) |
| `direction` | нет | `callers` (кто вызывает, по умолчанию) или `callees` (что вызывает метод) |
| `limit` | нет | Макс. результатов (по умолчанию 100, макс. 500) |

#### `go_to_definition` — Переход к определению символа
Навигация к определению метода или объекта метаданных. Обратная операция к `find_references`: вместо поиска использований — находит, где символ определён. Поддерживает русские имена типов метаданных.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `symbol` | да | Символ для поиска определения. Форматы: `МодульИмя.МетодИмя` (метод общего модуля), `МетодИмя` (метод в контекстном модуле, требует `modulePath`), FQN метаданных (`Catalog.Products`, `Документ.ЗаказКлиента`) |
| `modulePath` | нет | Контекстный модуль (`Documents/SalesOrder/ObjectModule.bsl`). Обязателен когда `symbol` — неквалифицированное имя метода |
| `includeSource` | нет | Включить исходный код метода (по умолчанию true) |

#### `get_symbol_info` — Информация о символе в позиции кода
Получает type/hover информацию о символе в конкретной позиции BSL-файла — то же, что EDT показывает при наведении мыши. Полезно для понимания типов переменных в динамически типизированном BSL.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `filePath` | да | Путь к BSL-файлу относительно `src/` |
| `line` | да | Номер строки (1-based) |
| `column` | да | Номер колонки (1-based) |

**Возвращает:** имя символа, тип (Function/Procedure/Parameter и др.), сигнатуру, параметры, документацию.

#### `list_modules` — Список модулей
Перечисляет все BSL-модули объекта или всего проекта (МодульОбъекта, МодульМенеджера, МодулиФорм и т.д.).

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `objectName` | нет | Имя объекта (`Products`). Без него — все модули проекта |
| `metadataType` | нет | Фильтр по типу (`documents`, `catalogs`, `commonModules`, `informationRegisters`, `accumulationRegisters`, `reports`, `dataProcessors`, `exchangePlans`, `businessProcesses`, `tasks`, `constants`, `commonCommands`, `commonForms`, `webServices`, `httpServices`) |
| `nameFilter` | нет | Подстрока для фильтрации по пути модуля (регистронезависимо) |
| `limit` | нет | Макс. результатов (по умолчанию 200, макс. 1000) |

#### `ai_context` - Агрегированный контекст объекта
Собирает в одном вызове metadata, список BSL-модулей и структуру модуля. Заменяет последовательность `get_metadata_details` + `list_modules` + `get_module_structure` одним запросом - экономит round-trips. Поддерживает уровни детализации.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `target` | да | FQN объекта (`Catalog.Products`, `CommonModule.MyModule`, `Справочник.Номенклатура`) или путь модуля (`CommonModules/MyModule/Module.bsl`) |
| `depth` | нет | `minimal` (metadata + список модулей), `standard` (+ структура методов, по умолчанию), `full` (+ исходный код) |
| `focusMethod` | нет | Имя метода для детального анализа - только его исходник включается в режиме `full` |
| `includeSource` | нет | Включать исходный код независимо от `depth`. По умолчанию: `false` для minimal/standard, `true` для full |
| `maxMethods` | нет | Макс. методов в структуре на модуль (по умолчанию 30) |

**Совет:** Используй перед тем как начать доработку объекта - один вызов вместо трех.

#### `diff_module` - Сравнение модуля с VCS
Показывает что изменилось в BSL-модуле по сравнению с предыдущей версией в git: добавленные/измененные/удаленные методы, построчный diff. Критично для code review.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `modulePath` | нет* | Путь от `src/` (`Documents/MyDoc/ObjectModule.bsl`). Альтернатива `objectName` + `moduleType` |
| `objectName` | нет* | Полное имя объекта (`Document.MyDoc`, `DataProcessor.MyProcessor`, `Документ.МойДок`) |
| `moduleType` | нет | Тип модуля (с `objectName`): `ObjectModule` (по умолчанию), `ManagerModule`, `FormModule`, `CommandModule`, `RecordSetModule` |
| `mode` | нет | `summary` (обзор методов, по умолчанию), `unified` (полный git diff), `methods` (отдельный diff на каждый измененный метод) |
| `contextLines` | нет | Количество строк контекста для `unified` (по умолчанию 3) |
| `formName` | нет | Имя формы (обязательно при `moduleType=FormModule`) |
| `commandName` | нет | Имя команды (обязательно при `moduleType=CommandModule`) |

**Новый файл:** если модуль не в VCS - вернет `isNewFile: true` и список всех методов как добавленных.

---

### 2. Code Search

#### `search_in_code` — Полнотекстовый поиск по коду
Поиск по всем BSL-модулям конфигурации. Поддерживает текст и regex, регистрозависимость, контекстные строки, фильтрацию по пути и типу метаданных.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `query` | да | Текст поиска или regex-паттерн |
| `isRegex` | нет | Использовать как regex (по умолчанию false) |
| `caseSensitive` | нет | Регистрозависимый поиск (по умолчанию false) |
| `fileMask` | нет | Фильтр по подстроке пути модуля (`CommonModules`, `Documents/SalesOrder`) |
| `metadataType` | нет | Фильтр по типу метаданных (`documents`, `catalogs`, `commonModules` и т.д.) |
| `contextLines` | нет | Кол-во строк контекста (по умолчанию 2, макс. 5) |
| `maxResults` | нет | Макс. совпадений (по умолчанию 100, макс. 500) |
| `outputMode` | нет | Режим вывода: `full` (совпадения с контекстом, по умолчанию), `count` (только количество, быстро), `files` (список файлов с числом совпадений) |

#### `get_content_assist` — Автодополнение кода
Получает предложения автодополнения в конкретной позиции BSL-файла. Открывает файл в редакторе EDT.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `filePath` | да | Путь к BSL-файлу |
| `line` | да | Номер строки (1-based) |
| `column` | да | Номер колонки (1-based) |
| `contains` | нет | Фильтр по подстроке (через запятую: `Insert,Add`) |
| `extendedDocumentation` | нет | Полная документация (по умолчанию false) |
| `limit` | нет | Макс. предложений |
| `offset` | нет | Пропустить N предложений (пагинация) |

---

### 3. Metadata Inspection

#### `get_metadata_objects` — Список объектов метаданных
Возвращает Name, Synonym, Comment, Type, наличие модулей. Поддерживает фильтрацию.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `metadataType` | нет | Тип: `all`, `documents`, `catalogs`, `informationRegisters`, `accumulationRegisters`, `commonModules`, `enums`, `constants`, `reports`, `dataProcessors`, `exchangePlans`, `businessProcesses`, `tasks`, `commonAttributes`, `eventSubscriptions`, `scheduledJobs` |
| `nameFilter` | нет | Частичное совпадение имени (регистронезависимо) |
| `language` | нет | Язык синонимов (`en`, `ru`) |
| `limit` | нет | Макс. результатов (по умолчанию 100) |

#### `get_metadata_details` — Детальные свойства объектов
Возвращает полные свойства объектов метаданных (реквизиты, ТЧ, формы, макеты и т.д.).

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `objectFqns` | да | Массив FQN: `['Catalog.Products', 'Document.SalesOrder']` |
| `full` | нет | Все свойства (true) или ключевые (false, по умолчанию) |
| `language` | нет | Язык синонимов |

#### `find_references` — Поиск ссылок на объект метаданных
Находит все места использования объекта: в других метаданных, в BSL-коде с номерами строк, формах, ролях, подсистемах. Работает только для top-level объектов.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `objectFqn` | да | FQN объекта (`Catalog.Products`, `CommonModule.Common`) |
| `limit` | нет | Макс. результатов на категорию (по умолчанию 100) |

#### `rename_metadata_object` — Переименование с рефакторингом
Переименовывает объект метаданных или реквизит с каскадным обновлением всех ссылок: BSL-код, формы, метаданные. Работает в режиме preview + confirm.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `objectFqn` | да | FQN объекта. Top-level: `Catalog.Products`. Вложенный: `Document.SalesOrder.Attribute.Amount` |
| `newName` | да | Новое имя |
| `confirm` | нет | `true` — выполнить. По умолчанию `false` — только preview |
| `disableIndices` | нет | Индексы точек изменений для пропуска через запятую (`'2,3,5'`) |
| `maxResults` | нет | Макс. точек изменений в preview (по умолчанию 20, `0` = без ограничений) |

**Workflow:** первый вызов без `confirm` → просмотр изменений → второй вызов с `confirm=true`. Через `disableIndices` можно исключить отдельные изменения.

#### `delete_metadata_object` — Удаление с очисткой ссылок
Удаляет объект метаданных или реквизит с очисткой ссылок. Работает в режиме preview + confirm.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `objectFqn` | да | FQN объекта (`Catalog.Products`, `Document.SalesOrder.Attribute.Amount`) |
| `confirm` | нет | `true` — выполнить. По умолчанию `false` — только preview |

#### `add_metadata_attribute` — Добавление реквизита
Добавляет новый реквизит к объекту метаданных (справочник, документ, регистр и др.) через EDT.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `parentFqn` | да | FQN родительского объекта (`Catalog.Products`, `Document.SalesOrder`) |
| `attributeName` | да | Имя нового реквизита |

#### `get_configuration_properties` — Свойства конфигурации
Имя, синоним, комментарий, вариант скрипта, режим совместимости и т.д.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Имя проекта (без него — первый проект конфигурации) |

---

### 4. Platform Documentation

#### `get_platform_documentation` — Документация платформы
Документация по типам, методам, свойствам и встроенным функциям платформы 1С. Поддерживает русские и английские имена.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `typeName` | да | Имя типа: `ValueTable`, `ТаблицаЗначений`, `Array`, `Structure` |
| `memberName` | нет | Фильтр по методу/свойству: `Add`, `Insert`, `Count` |
| `memberType` | нет | Тип: `method`, `property`, `constructor`, `event`, `all` |
| `category` | нет | Категория: `type` (типы платформы) или `builtin` (встроенные функции) |
| `language` | нет | Язык вывода: `en` или `ru` (по умолчанию `en`) |
| `projectName` | нет | Для определения версии платформы |
| `limit` | нет | Макс. результатов (по умолчанию 50) |

---

### 5. Error Checking and Validation

#### `get_problem_summary` — Сводка проблем
Количество проблем по проектам и уровням серьёзности (ERRORS, BLOCKER, CRITICAL, MAJOR, MINOR, TRIVIAL).

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Имя проекта (без него — все проекты) |

#### `get_project_errors` — Детальные ошибки проекта
Возвращает код проверки, описание, расположение объекта, уровень серьёзности. Фильтрация по объектам, серьёзности, ID проверки.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Имя проекта |
| `objects` | нет | Фильтр по FQN: `['Document.SalesOrder', 'Catalog.Products']` |
| `severity` | нет | Фильтр: `ERRORS`, `BLOCKER`, `CRITICAL`, `MAJOR`, `MINOR`, `TRIVIAL` |
| `checkId` | нет | Фильтр по ID проверки (подстрока, например `ql-temp-table-index`) |
| `limit` | нет | Макс. результатов (по умолчанию 100, макс. 1000) |

#### `get_check_description` — Описание проверки EDT
Markdown-описание проверки: объяснение, примеры, как исправить.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `checkId` | да | ID проверки (например `begin-transaction`, `ql-temp-table-index`) |

#### `revalidate_objects` — Перевалидация объектов
Запускает повторную валидацию проекта или конкретных объектов.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `objects` | нет | Массив FQN для валидации. Пустой массив = весь проект |

#### `validate_query` — Валидация запросов 1С
Проверяет текст запроса в контексте проекта — синтаксис и семантика. Поддерживает режим СКД (DCS).

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `queryText` | да | Текст запроса на языке запросов 1С |
| `dcsMode` | нет | Режим СКД (по умолчанию false). Включить для запросов СКД |

#### `clean_project` — Очистка проекта
Обновляет файлы с диска, очищает маркеры валидации, запускает полную перевалидацию.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Имя проекта (без него — все проекты EDT) |

---

### 6. Form Inspection and Editing

#### `get_form_screenshot` — Скриншот формы
Получает PNG-скриншот формы из WYSIWYG-редактора EDT. Возвращает изображение как embedded resource. Без параметров — снимает скриншот текущего открытого редактора формы.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Имя проекта EDT. Обязателен если указан `formPath` |
| `formPath` | нет | FQN формы через точку: `Catalog.Products.Forms.ItemForm`, `Document.SalesOrder.Forms.DocumentForm`, `CommonForm.MyForm`. Без него — текущий открытый редактор |
| `refresh` | нет | Принудительное обновление WYSIWYG перед снимком (по умолчанию false) |

**Примечание:** Нестабильно — иногда возвращает чёрное изображение. Попробовать `refresh: true` или перезапустить EDT.

#### `edit_form` - Редактирование управляемой формы
Добавляет или удаляет элементы формы (поля, группы, кнопки, таблицы, декорации) через BM API без ручного редактирования Form.xml. Шесть операций: `addField`, `addGroup`, `addButton`, `addTable`, `addDecoration`, `removeItem` + `help` для встроенной документации.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `formFqn` | да | FQN формы (`Catalog.Products.Form.ItemForm`) |
| `operation` | да | `addField`, `addGroup`, `addButton`, `addTable`, `addDecoration`, `removeItem`, `help` |
| `name` | нет | Имя элемента (обязателен для add/remove операций) |
| `title` | нет | Подпись/заголовок элемента |
| `elementType` | нет | Для `addField`: `InputField` (по умолчанию), `CheckBox`, `RadioButton`, `Label`, `Image`. Для `addGroup`: `UsualGroup` (по умолчанию), `Pages`, `Page`, `Column`, `CommandBar`. Для `addDecoration`: `Label` (по умолчанию) или `Picture` |
| `dataPath` | нет | Путь данных для привязки поля (`Object.Name`, `Object.Products`) |
| `parentName` | нет | Имя родительского контейнера (по умолчанию - корень формы) |
| `beforeName` | нет | Вставить перед элементом с этим именем |

**Совет:** Начинай с `operation: "help"` - возвращает детальную документацию операций с примерами.
**Совет:** `addButton` автоматически создает связанную команду с именем `<name> + Command`.

---

### 7. Tags and Organization

#### `get_tags` — Список тегов проекта
Пользовательские метки для организации объектов. Возвращает имя, цвет, описание, количество объектов.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |

#### `get_objects_by_tags` — Объекты по тегам
Объекты с указанными тегами (ANY из списка). Возвращает описания тегов и FQN объектов.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `tags` | нет | Массив имён тегов: `['Important', 'NeedsReview']` |
| `limit` | нет | Макс. объектов на тег (по умолчанию 100) |

---

### 8. Workspace and Tasks

#### `list_projects` — Список проектов workspace
Все проекты с именами, путями, типами и natures. Без параметров.

#### `get_bookmarks` — Закладки
Сообщение закладки, путь к файлу, номер строки.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Фильтр по проекту |
| `filePath` | нет | Фильтр по подстроке пути |
| `limit` | нет | Макс. результатов (по умолчанию 100, макс. 1000) |

#### `get_tasks` — Задачи (TODO/FIXME)
Задачи из кода (TODO, FIXME и т.д.) с приоритетами.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Фильтр по проекту |
| `filePath` | нет | Фильтр по подстроке пути |
| `priority` | нет | Фильтр: `high`, `normal`, `low` |
| `limit` | нет | Макс. результатов (по умолчанию 100, макс. 1000) |

#### `get_edt_version` — Версия EDT
Возвращает версию 1C:EDT. Без параметров.

---

### 9. Application Management

#### `get_applications` — Список приложений (информационных баз)
ID приложения, имя, тип, состояние обновления. ID нужен для `update_database` и `debug_launch`.

**Важно:** Вызывать от основного проекта конфигурации, не от расширения. Приложения привязаны к конфигурации, расширение не имеет собственных приложений.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT (основная конфигурация, не расширение) |

#### `update_database` — Обновление базы данных
Полное (full reload) или инкрементальное обновление. Требует `applicationId` из `get_applications`.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `applicationId` | да | ID приложения из `get_applications` |
| `fullUpdate` | нет | Полная перезагрузка (true) или инкрементальная (false, по умолчанию) |
| `autoRestructure` | нет | Автоматическая реструктуризация (по умолчанию true) |

#### `debug_launch` — Запуск отладки
Запускает приложение в режиме отладки через существующую конфигурацию запуска.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `applicationId` | да | ID приложения из `get_applications` |
| `updateBeforeLaunch` | нет | Обновить БД перед запуском (по умолчанию true) |

---

### 10. Debugging

Группа инструментов для пошаговой отладки BSL-кода: точки останова, ожидание срабатывания, инспекция переменных, вычисление выражений, управление выполнением, запуск YAXUnit-тестов.

**Типичный цикл:** `debug_launch` (или `debug_yaxunit_tests`) → `set_breakpoint` → `wait_for_break` → `get_variables` / `evaluate_expression` → `step` / `resume`.

#### `debug_status` - Статус debug-сессий
Возвращает активные debug-запуски: режим (debug/run), приостановлена ли цель, количество потоков, строка верхнего frame если приостановлено.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `applicationId` | нет | Фильтр по id приложения |

#### `set_breakpoint` - Установка breakpoint
Устанавливает точку останова на строку BSL-модуля. Принимает EDT-относительный путь (`CommonModules/Foo/Module.bsl`) или абсолютный путь файла.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Имя проекта EDT (обязателен при EDT-относительном пути) |
| `module` | да | Путь к модулю (EDT-относительный или абсолютный) |
| `lineNumber` | да | Номер строки (1-based) |

**Совет:** После установки вызывай `wait_for_break` чтобы блокирующе ждать срабатывания.

#### `list_breakpoints` - Список активных breakpoints
Возвращает все установленные точки останова. Опциональный фильтр по проекту.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | нет | Фильтр по проекту |

#### `remove_breakpoint` - Удаление breakpoint
Удаляет точку останова. Можно передать либо `breakpointId` (возвращенный из `set_breakpoint`), либо координаты `projectName` + `module` + `lineNumber`.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `breakpointId` | нет | ID маркера из `set_breakpoint` |
| `projectName` | нет | Имя проекта (при поиске по координатам) |
| `module` | нет | Путь модуля (при поиске по координатам) |
| `lineNumber` | нет | Номер строки (при поиске по координатам) |

#### `wait_for_break` - Ожидание срабатывания breakpoint
Блокирующе ждет suspend-событие (срабатывание breakpoint) на указанном приложении. При срабатывании возвращает снимок приостановленного потока/frame. При таймауте возвращает `{hit: false}` (не прерывая запуск - можно вызвать снова).

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `applicationId` | да | ID приложения запущенной debug-сессии |
| `timeout` | нет | Окно ожидания в секундах (по умолчанию 60) |

#### `resume` - Продолжить выполнение
Возобновляет приостановленный debug-поток или все потоки debug-цели. Передать `threadId` (из `wait_for_break`) или `applicationId` (возобновить все потоки цели).

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `threadId` | нет | ID потока из `wait_for_break` |
| `applicationId` | нет | ID приложения (возобновляет все потоки цели) |

#### `step` - Пошаговое выполнение
Шагает приостановленный debug-поток. Блокирующе ждет следующего SUSPEND-события (или таймаута), возвращает новый снимок frame.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `threadId` | да | ID потока из `wait_for_break` |
| `kind` | да | Вид шага: `over`, `into`, `out` |
| `timeout` | нет | Окно ожидания в секундах (по умолчанию 30) |

#### `get_variables` - Переменные стек-frame
Читает переменные из stack-frame приостановленного потока. Передать `frameRef` из `wait_for_break` (предпочтительно) или `threadId` + `frameIndex`. Для раскрытия вложенных структур используй `expandPath`.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `frameRef` | нет | Стабильная ссылка на frame из `wait_for_break` |
| `threadId` | нет | ID потока (альтернатива `frameRef`) |
| `frameIndex` | нет | Индекс frame (0-based, при использовании `threadId`) |
| `expandPath` | нет | Путь через точку для раскрытия вложенной переменной (`Объект.Товары`) |

#### `evaluate_expression` - Вычисление BSL-выражения
Вычисляет произвольное BSL-выражение в контексте приостановленного stack-frame. **ВНИМАНИЕ:** выполняет произвольный BSL-код в запущенном 1С-приложении - может изменить состояние.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `frameRef` | да | Стабильная ссылка на frame из `wait_for_break` |
| `expression` | да | BSL-выражение для вычисления |

#### `debug_yaxunit_tests` - Запуск YAXUnit-тестов в debug режиме
Запускает YAXUnit-тесты с подключением отладчика (breakpoints срабатывают). Возвращается сразу после постановки в очередь - далее вызывай `wait_for_break`. Используй узкий фильтр тестов (один метод) для предсказуемости.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `applicationId` | да | ID приложения из `get_applications` |
| `extensions` | нет | Имена расширений через запятую (фильтр по расширению) |
| `modules` | нет | Имена модулей через запятую (фильтр) |
| `tests` | нет | Имена тестов в формате `Module.Method` (рекомендуется: один тест) |

**Требования:** существующая конфигурация запуска 1С + YAXUnit установлен в информационной базе.

#### `run_yaxunit_tests` - Запуск YAXUnit-тестов без отладки
Запускает YAXUnit-тесты, polls до завершения (до `timeout` секунд), возвращает JUnit Markdown-отчет. Если запуск продолжается после окна polling - возвращает `Pending`, вызови снова для дожидания. Запуск НЕ прерывается при таймауте. Полный отчет также пишется в `report.md` рядом с `junit.xml`.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `projectName` | да | Имя проекта EDT |
| `applicationId` | да | ID приложения из `get_applications` |
| `extensions` | нет | Имена расширений через запятую |
| `modules` | нет | Имена модулей через запятую |
| `tests` | нет | Имена тестов в формате `Module.Method` |
| `timeout` | нет | Окно polling в секундах (по умолчанию 60) |

---

### 11. Profiling

Замер производительности (profiling) BSL-кода: счетчики вызовов и тайминги на каждую выполненную строку. Требует активную debug-сессию.

#### `start_profiling` - Включить замер производительности
Переключает замер производительности на активной debug-цели. После включения - запустить тестовый сценарий, затем вызвать `get_profiling_results`.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `applicationId` | да | ID приложения запущенной debug-сессии |

**Требования:** активная debug-сессия (`debug_launch` или `debug_yaxunit_tests`).

#### `get_profiling_results` - Результаты профилирования
Возвращает данные профилирования: по модулю, по строке - количество вызовов, время, процент. Опциональный фильтр по имени модуля и минимальной частоте вызовов.

| Параметр | Обязательный | Описание |
|---|:---:|---|
| `moduleFilter` | нет | Фильтр подстроки по имени модуля |
| `minFrequency` | нет | Включать только строки вызванные минимум N раз (по умолчанию 1) |

---

## Typical Workflows

### Анализ незнакомого модуля
1. `get_module_structure` — получить список методов
2. `read_method_source` — прочитать нужные методы
3. `get_method_call_hierarchy` — понять, откуда вызываются

### Поиск использований объекта метаданных
1. `find_references` — все ссылки на объект (код, формы, роли, подсистемы)
2. `search_in_code` — дополнительный текстовый поиск если нужно

### Проверка качества после изменений
1. `revalidate_objects` — перевалидировать изменённые объекты
2. `get_project_errors` с фильтром по объектам — получить ошибки
3. `get_check_description` — понять суть ошибки и как исправить

### Валидация запросов
1. `validate_query` — проверить текст запроса на синтаксис и семантику
2. `validate_query` с `dcsMode=true` — проверить запрос СКД

### Обновление и тестирование
1. `get_applications` — получить ID приложения
2. `update_database` — обновить базу
3. `debug_launch` — запустить в отладке

### Навигация к определению
1. `go_to_definition` с `symbol` — найти определение метода или объекта
2. `get_symbol_info` — получить тип символа в конкретной позиции
3. `read_method_source` — прочитать код, если нужно больше контекста

### Рефакторинг метаданных
1. `find_references` — проверить все ссылки перед изменением
2. `rename_metadata_object` с `preview=true` — просмотр каскадных изменений
3. `rename_metadata_object` с `confirm=true` — выполнить переименование
4. `revalidate_objects` — проверить результат

### Модификация метаданных через EDT
1. `add_metadata_attribute` — добавить реквизит (вместо ручного редактирования XML)
2. `delete_metadata_object` — удалить объект/реквизит с очисткой ссылок
3. `write_module_source` — записать BSL-код с автопроверкой синтаксиса

### Изучение API платформы
1. `get_platform_documentation` с `typeName` — документация по типу
2. `get_content_assist` — автодополнение в контексте кода

### Сбор контекста перед доработкой
1. `ai_context` с `target=<FQN объекта>` и `depth=standard` - одним вызовом получить метаданные + список модулей + структуру методов
2. При необходимости углубиться в конкретный метод - `depth=full` + `focusMethod=<имя>`

### Code review изменений модуля
1. `diff_module` с `mode=summary` - обзор какие методы добавлены/изменены/удалены
2. Если нужен детальный разбор - `mode=methods` (отдельный diff на каждый измененный метод)
3. Для полного контекста изменений - `mode=unified` (git diff)

### Отладка BSL-кода
1. `get_applications` - получить `applicationId`
2. `debug_launch` - запустить приложение в режиме отладки
3. `set_breakpoint` - установить breakpoint в нужном методе
4. Запустить сценарий через UI приложения или `debug_yaxunit_tests`
5. `wait_for_break` - дождаться срабатывания breakpoint
6. `get_variables` с `frameRef` - посмотреть значения переменных
7. `evaluate_expression` - вычислить BSL-выражение в контексте остановки
8. `step` (over/into/out) или `resume` - продолжить выполнение
9. `remove_breakpoint` - снять breakpoint после завершения

### Профилирование BSL-кода
1. `debug_launch` или `debug_yaxunit_tests` - активная debug-сессия
2. `start_profiling` с `applicationId` - включить замер
3. Выполнить тестовый сценарий (через UI или YaxUnit)
4. `get_profiling_results` с `moduleFilter` - получить данные по вызовам/времени
5. Использовать `minFrequency` для фильтрации редко вызываемых строк

### Модификация формы без ручного XML
1. `edit_form` с `operation=help` - получить справку по операциям
2. `get_form_screenshot` - визуально оценить текущее состояние формы
3. `edit_form` с `operation=addField` / `addGroup` / `addButton` / `addTable` / `addDecoration` - добавить элементы
4. `edit_form` с `operation=removeItem` - удалить ненужные элементы
5. `get_form_screenshot` с `refresh=true` - проверить результат
