# Описание инструментов MCP-сервера 1C:RSV

Автор: Радзивиллович Сергей

MCP-сервер 1C:RSV предоставляет 27 инструментов для работы с 1С:EDT через AI-ассистента. Инструменты организованы в 7 групп и доступны в трёх профилях в зависимости от вашей роли. Все инструменты работают с любыми типами проектов: конфигурации, расширения, внешние обработки и внешние отчёты.

Профили определяют, какие инструменты видит AI-ассистент:

Профиль | Назначение | Инструментов | Группы
--- | --- | --- | ---
Аналитик | Изучение конфигурации без внесения изменений | 18 | 3 группы (только чтение)
Разработчик | Повседневная разработка: анализ + запись кода + валидация + экспорт | 26 | 6 групп
Архитектор | Полный контроль: создание объектов, форм, отчётов СКД | 27 | 7 групп

Каждый следующий профиль включает все инструменты предыдущего.

## Профиль «Аналитик» — 18 инструментов

Профиль для изучения и документирования конфигураций 1С. Аналитик может исследовать структуру метаданных, читать код, искать зависимости, просматривать формы и справку — без возможности что-либо изменить.

### Анализ метаданных (8 инструментов)

Группа для изучения структуры конфигурации: какие объекты есть, из чего они состоят, как выглядят формы, что написано в справке платформы.

show_edt_version
Версия EDT

Возвращает версию установленной 1C:EDT, номер сборки, дату, а также информацию о Java и операционной системе. Полезно для диагностики и проверки совместимости.

list_workspace_projects
Список проектов

Возвращает список всех проектов, открытых в текущем рабочем пространстве EDT. Каждый проект содержит имя, путь на диске и признак — является ли он проектом 1С. Используйте этот инструмент первым, чтобы узнать точные имена проектов для передачи в другие инструменты.

list_metadata_objects
Каталог объектов метаданных

Возвращает перечень объектов конфигурации с фильтрацией по типу и имени. Поддерживает около 39 типов объектов: справочники, документы, регистры (сведений, накопления, бухгалтерии, расчёта), планы счетов, планы видов характеристик, планы видов расчёта, бизнес-процессы, задачи, перечисления, обработки, отчёты, общие модули, подсистемы, роли и другие.

Для каждого объекта возвращается имя, синоним, количество реквизитов и форм. Поддерживается пагинация — для больших конфигураций всегда указывайте фильтр по типу или маску имени.

get_object_details
Детали объекта метаданных

Возвращает полную структуру конкретного объекта: все реквизиты с типами данных, табличные части с колонками, список форм, команд и модулей. Для разных типов объектов возвращаются специфичные поля — например, у справочников видна иерархия и владельцы, у документов — тип нумерации, у регистров — измерения и ресурсы.

get_config_properties
Свойства конфигурации

Возвращает общие свойства конфигурации: имя, версию, режим совместимости, список подсистем и статистику по количеству объектов каждого типа. Позволяет быстро понять, с какой конфигурацией вы работаете.

get_form_image
Визуализация и структура формы

Показывает управляемую форму объекта в двух форматах:

- Картинка (PNG) — визуальное представление формы, как она выглядит в 1С.
- Структура (JSON) — полное дерево элементов формы: группы, поля, таблицы с колонками, кнопки, декорации, командные панели формы и таблиц, контекстные меню.

У каждой кнопки указывается связанная команда (стандартная команда платформы или пользовательская), локализованный заголовок, подсказка и установленная картинка. Удобно искать элементы по описанию пользователя — например, «кнопка отмены поиска» → узел с командой `CancelSearch`.

Расположение элементов: у каждого узла указан порядковый номер внутри родителя (`position`), направление раскладки группы (`childrenGroup`: вертикально/горизонтально), положение заголовка, представление кнопки, секция в командной панели. Агент может точно понять, что идёт за чем, и указать место для вставки нового элемента.

Пагинация для больших форм: параметры `depth`, `subtree`, `maxElements` позволяют получать форму частями. На формах типовых конфигураций с сотнями элементов можно сначала взять верхний уровень (`depth=1`), потом раскрыть нужную ветку (`subtree=ПанельКоманд`) — без перегрузки контекста.

get_platform_docs
Справка по платформе 1С

Полноценный синтаксис-помощник, доступный AI-ассистенту. Покрывает тысячи топиков:

- API платформы — все типы (Запрос, ТаблицаЗначений, HTTPСоединение и сотни других), их методы, свойства, конструкторы. Поддерживается точечная нотация: Запрос.Выполнить, HTTPСоединение.Получить.
- Встроенный язык — ключевые слова (Если, Для, Пока, Попытка), базовые типы (Число, Строка, Дата, Булево).
- Язык запросов — ВЫБРАТЬ, ИЗ, ГДЕ, СОЕДИНЕНИЕ, ОБЪЕДИНИТЬ, ИТОГИ, ВЫРАЗИТЬ, ПОДОБНО и все агрегатные функции.
- Директивы компиляции — &НаСервере, &НаКлиенте, &НаСервереБезКонтекста и другие.
- Аннотации расширений — &Вместо, &После, &Перед, &ИзменениеИКонтроль.
- Функции СКД — около 130 функций языка выражений системы компоновки данных.

Поиск работает без учёта регистра и понимает как русские, так и английские имена.

get_object_help
Встроенная справка объекта

Читает справку, заложенную разработчиками конфигурации в объект метаданных. Это те самые HTML-страницы, которые открываются по кнопке «?» в пользовательском интерфейсе 1С. Дополнительно возвращает комментарий из описания объекта, синоним и список подсистем. Позволяет аналитику получить содержательное описание объекта без погружения в код.

### Анализ кода (7 инструментов)

Группа для чтения и исследования BSL-кода: просмотр модулей, чтение методов, анализ цепочек вызовов, сравнение с предыдущими версиями.

list_modules
Список модулей

Возвращает перечень всех BSL-модулей в проекте с указанием типа (модуль объекта, менеджера, формы, общий модуль), размера в байтах и количества строк. Поддерживает фильтрацию по типу модуля, объекту-владельцу и сортировку по размеру — удобно для поиска самых крупных модулей.

read_module_source
Чтение исходника модуля

Читает исходный код BSL-модуля целиком или по указанному диапазону строк. Модуль можно указать двумя способами: путём к файлу или парой «имя объекта + тип модуля». Поддерживает фильтрацию — можно исключить комментарии или пустые строки.

get_module_structure
Карта методов модуля

Возвращает список всех процедур и функций модуля с их сигнатурами, параметрами, признаком экспортности, номерами строк и принадлежностью к областям (#Область). Позволяет быстро понять структуру модуля перед тем, как читать конкретные методы.

read_method_source
Исходный код одного метода

Читает полный текст конкретной процедуры или функции по имени — от объявления до КонецПроцедуры/КонецФункции, включая документирующий комментарий над методом. Удобнее, чем читать весь модуль, когда нужен один метод.

get_method_call_hierarchy
Иерархия вызовов

Показывает, кто вызывает указанный метод (входящие вызовы) и что вызывает сам метод (исходящие вызовы). Поддерживает рекурсивный анализ до 3 уровней глубины. Незаменим для оценки влияния изменений — перед модификацией метода всегда полезно проверить, откуда он вызывается.

ai_context
Умный сборщик контекста

Одним вызовом собирает всю релевантную информацию. Четыре вида цели анализа:

- Объект метаданных — `Catalog.Номенклатура`, `Document.Х`, любой регистр, план видов характеристик, бизнес-процесс и т.д. Возвращает структуру, реквизиты, табличные части, модули, методы, иерархию вызовов, ссылки в коде.
- Форма — `Catalog.Х.Form.ФормаСписка`, `Document.Х.Form.ФормаДокумента`. Возвращает дерево элементов, реквизиты формы с типами, параметры, пользовательские и стандартные команды, обработчики событий, путь к модулю. Поддерживает пагинацию (`formDepth`, `formSubtree`, `formMaxElements`) для больших форм.
- Общий модуль — `CommonModule.Х` или `ОбщийМодуль.Х`.
- Путь к .bsl-модулю — для случаев, когда нужен контекст конкретного файла.

Три режима глубины: minimal (метаданные + список модулей), standard (+ структура методов, по умолчанию), full (+ исходный код + иерархия вызовов + ссылки). Заменяет 5–7 последовательных вызовов отдельных инструментов. Оптимальный первый шаг перед работой с незнакомым объектом или формой.

diff_module
Сравнение с версией из git

Сравнивает текущее состояние BSL-модуля с предыдущей версией из системы контроля версий. Три режима:

- summary — сводка: какие методы добавлены, изменены, удалены.
- unified — полный diff в формате git.
- methods — построчный diff для каждого изменённого метода отдельно.

search_in_code
Полнотекстовый поиск

Ищет текст или регулярное выражение по BSL-коду проекта. Поддерживает фильтрацию по конкретному объекту, поиск без учёта регистра, вывод контекста вокруг найденных строк. Три режима вывода: полные результаты с контекстом, только счётчики по файлам, только список файлов.

find_object_references
Ссылки на объект в коде

Находит все места использования объекта метаданных в BSL-коде. В режиме deep автоматически ищет все производные типы: СправочникСсылка, СправочникОбъект, Справочники и т.д. Незаменим при анализе зависимостей перед рефакторингом или удалением объекта.

resolve_symbol
Переход к определению

Находит процедуру или функцию по имени и возвращает её местоположение, исходный код и документирующий комментарий. Поддерживает двухкомпонентный формат ОбщийМодуль.МойМетод (поиск в конкретном модуле) и однокомпонентный МойМетод (поиск по всему проекту). При неточном имени предлагает похожие варианты.

## Профиль «Разработчик» — добавляет 8 инструментов

К 18 инструментам аналитика добавляются инструменты для редактирования кода, отладки, валидации, управления сборкой и экспорта внешних обработок. Всего у разработчика 26 инструментов.

Синтаксис-помощник: разработчику также доступен get_platform_docs из профиля Аналитика — полная справка по API платформы 1С, языку запросов, директивам компиляции и функциям СКД. Незаменим при написании кода — агент проверяет сигнатуры методов и параметры по официальной документации.

### Редактирование кода и отладка (2 инструмента)

write_module_source
Запись BSL-кода

Записывает BSL-код в модуль объекта метаданных. Поддерживает 6 режимов записи для разных задач:

Режим | Назначение
--- | ---
replace | Замена всего модуля целиком (для пустых или очень маленьких модулей)
replaceLines | Замена диапазона строк (для точечных правок)
replaceMethod | Замена одного метода по имени (самый безопасный способ изменить метод)
append | Добавление кода в конец модуля
insertBefore | Вставка перед указанной строкой
insertAfter | Вставка после указанной строки

Безопасность:

- По умолчанию работает в режиме симуляции (dryRun=true) — показывает, что изменится, без реальной записи.
- Автоматически создаёт резервную копию модуля перед записью.
- Блокирует запись, если удаляется более 50% строк модуля (защита от случайной потери кода).
- Проверяет базовую структуру BSL (парность Процедура / КонецПроцедуры, Функция / КонецФункции, Если / КонецЕсли) до записи — повреждённый код в файл не попадает.

Встроенная валидация EDT (автомат). После успешной записи (не dry-run) плагин сам дожидается полной валидации EDT по записанному файлу и возвращает её результат в том же ответе, в поле validation. AI-ассистенту не нужно отдельно звать get_validation_errors — в ответе записи уже лежит:

- список ошибок с текстом, номером строки и файлом;
- счётчики errorCount / warningCount;
- подсказка: «3 ошибок в записанном файле. Исправь их перед продолжением» или «0 ошибок — код корректен».

Агент сразу видит, получилось ли что-то полезное. Если errorCount > 0 — исправляет и записывает ещё раз, пока не будет нуля. Цикл «записал → проверил → исправил» замыкается без обращения к пользователю и без вызова ещё одного инструмента.

Важно: в поле validation попадают только ошибки по записанному файлу, а не весь проект. Посторонние старые ошибки демо-конфигурации не засоряют ответ. Для серии быстрых правок валидацию можно выключить параметром validateAfterWrite=false и позвать её вручную в конце через get_validation_errors.

launch_debugger
Управление отладкой

Полноценный отладчик с 16 действиями:

- Запуск и завершение — запуск клиента 1С в режиме отладки, завершение сессии.
- Пошаговое выполнение — шаг через строку, вход в метод, выход из метода.
- Точки останова — добавление, удаление, включение/отключение, условные точки останова.
- Инспекция — чтение переменных, стек вызовов, вычисление произвольных BSL-выражений.

Типичный сценарий: list_applications → launch → addBreakpoint → пользователь выполняет действие в 1С → getState → getVariables → stepOver → resume.

### Валидация (2 инструмента)

Группа для работы с результатами проверок EDT: ошибки, предупреждения, автофиксы, проверка запросов.

get_validation_errors
Ошибки валидации

Возвращает ошибки и предупреждения из EDT. Для каждой показывает текст на русском, файл, номер строки, начало и конец проблемного участка, тип проверки, есть ли автофикс (Quick Fix), готовую строку подавления // @skip-check … и подробное описание из каталога проверок. Поддерживает автоматическое применение официальных Quick Fix через отдельный режим.

Область выборки (параметр scope):

- session (по умолчанию) — показывает ошибки только в файлах, изменённых в текущей сессии EDT (через инструменты MCP или вручную в редакторе). AI видит ровно то, что сам наработал, и не отвлекается на тысячи старых ошибок демо-конфигурации.
- object — ошибки конкретного объекта метаданных (с objectName=FQN).
- project — все ошибки проекта (осознанный запрос для полного скана, например перед релизом).
- all — все ошибки всех открытых проектов workspace.

Дефолт severity = ERROR — возвращаются только реальные ошибки, предупреждения не засоряют ответ. Нужны — передавайте явно.

Надёжная синхронизация. Xtext-парсер коммитит маркеры асинхронно через внутренний ExecutorService, который не ловится стандартными ожиданиями сборки. Инструмент подписывается на события обновления маркеров через официальный API EDT и ждёт «тишины» в потоке — самый надёжный способ синхронизации. Плюс retry-цикл до 3 попыток сбора. Ситуация «AI записал модуль, в EDT появился красный крестик, а инструмент возвращает 0» закрыта.

На крупных конфигурациях (ERP, УТ, БП) первый вызов на свежеоткрытом проекте больше не зависает — в режиме session читаются только маркеры свежих файлов, выдача практически мгновенная даже при десятках тысяч маркеров в проекте.

Два канала маркеров. Одновременно читает Eclipse IMarker.PROBLEM (синтаксис Xtext, сборщики) и EDT-нативные маркеры через IMarkerManager (все проверки фреймворка checks: качество кода БСП, BSL, формы, метаданные). Дубликаты автоматически дедуплицируются.

validate_query
Проверка запроса 1С

Пропускает текст запроса через тот же механизм разбора языка запросов 1С, который работает внутри редактора EDT. Результат такой же, как если бы программист вставил этот запрос в модуль и открыл в редакторе — те же подчёркивания, те же сообщения об ошибках.

Что ловится:

- Все синтаксические ошибки — опечатки в ключевых словах (ВЫБРАТ, СГРУПИРОВАТЬ, УПОРЯДИЧИТЬ), недопустимые токены, незакрытые и лишние скобки, незакрытые строковые литералы, оборванные выражения (ПО Остатки.Товар = без правой части).
- Типовые проверки языка запросов — неверные имена псевдонимов (с точкой или пробелом), проблемы с агрегатными функциями, несогласованные ветки CASE ... КОГДА ... ТОГДА, ошибки в BETWEEN.
- Проверки для запросов СКД (при isDcs=true) — корректность блоков {ВЫБРАТЬ ...} и {ГДЕ ...}, несоответствие полей между основной выборкой и блоками настроек, неправильное использование параметров виртуальных таблиц.

Что в ответе. По каждой ошибке — уровень (ERROR / WARNING / INFO), текст на русском, номер строки и колонки, смещение от начала текста и длина проблемного фрагмента, код диагностики для программной идентификации. AI-ассистент сразу указывает на проблемное слово и предлагает исправление — без обращения к пользователю.

Поддержка обоих языков: обычные запросы 1С и запросы СКД через параметр isDcs=true. Разные парсеры — разный набор диагностик.

Типичный сценарий: AI-ассистент перед тем, как вставить запрос в модуль через write_module_source, проверяет его через validate_query, при необходимости исправляет и перепроверяет — в код попадает уже чистый запрос.

Как вы вызываете инструмент. Отдельного «автоматического» запуска сейчас нет — вы просите AI-ассистента проверить запрос, он вызывает validate_query. Типичные промпты:

- «Проверь запрос: ВЫБРАТЬ Т.Артикул ИЗ Справочник.Товары КАК Т» — AI сразу пропускает текст через инструмент.
- «В процедуре ПодготовитьЗапросПоТоварам в модуле менеджера отчёта ОстаткиТоваров есть запрос — проверь его» — AI читает метод, извлекает строку запроса, прогоняет проверку.
- «Пройдись по менеджер-модулю отчёта Продажи — там несколько запросов в разных процедурах, проверь каждый» — AI собирает структуру модуля и проверяет каждый литерал.
- «Проверь запрос из схемы компоновки отчёта ОстаткиТоваров» — AI читает текст из набора данных схемы и вызывает инструмент с параметром для запросов СКД.
- «Напиши метод выборки товаров с артикулом на "А", проверь запрос перед тем, как вставлять в модуль» — AI пишет, сам проверяет, исправляет, и только потом записывает.

Как поставить проверку «на автомат» через AI. Если не хотите каждый раз говорить «проверь запрос», добавьте в настройки своего AI-ассистента правило вида:

«Перед каждым вызовом write_module_source, если в записываемом коде есть Запрос.Текст = "..." или другие строки-запросы, сначала вызови validate_query на извлечённый текст. Если есть ошибки — исправь и перепроверь. Только потом записывай модуль.»

В Claude Code это пишется в CLAUDE.md проекта, в Cursor — в «Rules for AI», в Windsurf — в memories / правилах. Сильные модели (Claude Sonnet 4+, GPT-4o+ и аналоги) такое правило соблюдают стабильно. Слабые могут забывать — им надёжнее напомнить про проверку прямым промптом.

Полностью встроенная автоматика (по аналогии с тем, как write_module_source уже сам возвращает ошибки валидации EDT в поле validation ответа) запланирована на будущий релиз: плагин сам будет находить запросы в записываемом BSL и в наборах данных СКД, проверять их и возвращать результат в том же ответе — агенту не придётся помнить про отдельный вызов.

Чего инструмент пока не делает. Не проверяет существование конкретной таблицы (Справочник.Товары) или поля (Товары.Артикул) в вашей конфигурации — это требует полного контекста проекта и в EDT доступно только в редакторе запросов. Также пока не подключены стилистические проверки 1С-сообщества (соединение с подзапросом, отсутствие индекса у временной таблицы и т. п.). Оба слоя запланированы на следующие релизы.

### Сборка и управление (4 инструмента)

sync_database
Обновление базы данных

Запускает обновление информационной базы 1С из проекта EDT. Поддерживает инкрементальное и полное обновление.

rebuild_project
Очистка и пересборка

Удаляет скомпилированные файлы и кэш EDT, при необходимости запускает полную пересборку. Помогает при ложных ошибках валидации и устаревших данных.

list_applications
Список информационных баз

Возвращает список зарегистрированных информационных баз для проекта с их идентификаторами, типами и состоянием обновления. Основное назначение — получить applicationId, который требуется для запуска отладчика и обновления базы.

export_object
Экспорт внешних обработок и отчётов

Собирает проект внешней обработки или отчёта из EDT в готовый бинарный файл .epf / .erf, который можно сразу открыть в 1С. Один вызов — готовый файл за 1–2 секунды.

- Платформа 1С определяется автоматически по версии проекта
- Расширение файла выбирается автоматически: .epf для обработок, .erf для отчётов
- Проверено на Windows; на Linux и macOS должно работать — но прогона пока не было.

## Профиль «Архитектор» — добавляет 1 инструмент (~57 операций)

К 26 инструментам разработчика добавляется инструмент для создания и изменения объектов метаданных, форм, схем компоновки данных и расширений. Всего у архитектора 27 инструментов.

Важно. Группа «Редактирование метаданных» отключена по умолчанию. Для включения используйте настройки плагина: Window → Preferences → 1C:RSV → включите группу.

### edit_metadata — Конструктор конфигурации

Единый инструмент для создания и настройки объектов метаданных, форм, макетов печатных форм и отчётов. Содержит около 57 операций, организованных в 7 областей. Все изменения выполняются через нативные сервисы EDT — после операций не нужно вручную перезагружать формы или обновлять дерево объектов.

edit_metadata (1 инструмент, ~57 операций) │ ├── Объекты метаданных (8 операций) │ ├── createObject — создание (30+ типов: справочники, документы, регистры...) │ ├── setObjectProperty — свойства объекта (с подсказками похожих имён) │ ├── addObjectAttribute / removeObjectAttribute — реквизиты объекта, удаление с автоочисткой полей форм │ ├── addTabularSection / removeTabularSection — табличные части целиком │ └── addTabularSectionAttribute / removeTabularSectionAttribute — колонки табличной части │ ├── Специализированные объекты (6 операций) │ ├── addRegisterField / removeRegisterField — поля всех 4 видов регистров │ ├── addEnumValue — значения перечислений │ ├── addSubsystemContent / removeSubsystemContent — состав подсистем │ ├── setRoleRight — права ролей │ └── setDefinedTypeTypes — состав определяемого типа │ ├── Формы (15 операций) │ ├── createForm — создание (все типы форм) │ ├── addFormAttribute / addFormAttributeColumn — реквизиты формы │ ├── addDynamicListTable — таблица динамического списка │ ├── addField, addGroup, addButton, addTable — элементы формы │ ├── addDecoration, addRadioButton — декорации и переключатели │ ├── setProperty — свойства элементов (цвета, шрифты, картинки) │ ├── listPictures — поиск среди 763 стандартных картинок │ ├── addCommandHandler — обработчики кнопок │ └── setupSettingsComposerOnForm — композитор настроек на форме (реквизит + таблицы + ExtInfo) │ ├── Макеты печатных форм (4 операции) │ ├── addTemplate — создание макета (табличный, текстовый, СКД и др.) │ ├── setTemplateCell — содержимое ячейки (текст, шрифт, цвет, выравнивание) │ ├── mergeTemplateCells — объединение диапазонов ячеек │ └── drawTemplate — пакетное заполнение (ячейки, ширины, именованные области) │ ├── Расширения (3 операции) │ ├── adoptObject / adoptObjects — заимствовать один объект (опц. рекурсивно) или сразу несколько явным списком │ ├── adoptChild — заимствовать дочерний элемент │ └── adoptFormItem — заимствовать элемент формы │ ├── Отчёты СКД (22 операции) │ ├── createReportSchema, addDataSet, addDataSetField — структура │ ├── addSchemaParameter, addCalculatedField, addTotalField — вычисления │ ├── addSettingsGroup/Table/Chart — группировки и визуализация │ ├── addSettingsFilter/Order — отборы и сортировки │ ├── addConditionalAppearance — условное оформление │ └── setOutputParameter, addSettingsVariant — настройки вывода │ └── Общее (2 операции) ├── moveItem — перемещение элементов └── removeItem — удаление элементов

#### Встроенная справка

У инструмента есть собственный справочник, который AI-ассистент запрашивает при необходимости:

- `help` — список всех операций с кратким описанием
- `help topic=<операция>` — подробная справка по конкретной операции с примерами
- `help topic=types` — каталог типов данных для реквизитов
- `help topic=objectTypes` — список всех типов объектов, которые можно создать
- `help topic=formTypes` — типы форм
- `help topic=propertyValues` — форматы значений свойств
- `help topic=workflow` — типичный сценарий работы от создания объекта до обработчиков
- `help topic=matrixWorkflow` — рабочий сценарий для матричных отчётов (товары × месяцы)
- `help topic=composerWorkflow` — обработка или отчёт с композитором настроек на форме: отборы, группировки, BSL-код инициализации

AI-ассистенту не нужно знать внутреннее устройство EDT — он спрашивает у инструмента, что доступно, и получает готовые примеры.

#### Объекты метаданных (8 операций)

createObject

Создаёт любой объект метаданных со всеми свойствами по умолчанию (такими же, как при создании через мастер EDT). Поддерживаемые типы (более 30): справочники, документы, обработки, отчёты, перечисления, регистры (сведений, накопления, бухгалтерии, расчёта), планы счетов, планы видов характеристик и расчёта, бизнес-процессы, задачи, планы обмена, общие модули, общие формы, общие команды, подсистемы, роли, константы, параметры сеансов, регламентные задания, функциональные опции, определяемые типы и другие. При создании регистров можно сразу задать измерения, ресурсы и документы-регистраторы. Для справочников, документов, обработок и отчётов — сразу же реквизиты и табличные части с колонками (параметры attributes и tabularSections). Всё создаётся одним вызовом — справочник с пятью реквизитами не требует шести отдельных запросов. Обязательные параметры для специфичных типов проверяются на входе — например, функциональная опция не создастся без ссылки на константу-хранилище.

setObjectProperty

Изменение свойств объекта: иерархия, тип кода, длина кода, длина наименования (descriptionLength), проведение, формы по умолчанию, периодичность регистра, картинка подсистемы и т.д. Картинки принимаются в двух форматах: стандартные (CreateFolder) и общие картинки конфигурации (CommonPicture.МояКартинка). Пакетный режим, русские и английские значения. При неизвестном имени свойства инструмент подсказывает самые близкие по написанию существующие свойства — защита от опечаток и созвучных имён.

addObjectAttribute

Добавление реквизитов на объекты всех типов, у которых они вообще бывают: справочники, документы, обработки, отчёты, все 4 вида регистров, планы счетов, планы видов характеристик и расчёта, бизнес-процессы, задачи, планы обмена. Тип данных можно не указывать — по умолчанию ставится Строка длиной 10, как при нажатии кнопки «+ Реквизит» в EDT. Принимаются все примитивы (включая ХранилищеЗначения, ДвоичныеДанные, УникальныйИдентификатор, ТабличныйДокумент), ссылочные типы и определяемые типы (DefinedType.X / ОпределяемыйТип.X). Имена типов работают и по-русски, и по-английски. Пакетный режим.

addTabularSection

Создание табличной части сразу с колонками. Тип колонки опциональный — как в addObjectAttribute.

addTabularSectionAttribute

Добавление колонок в уже существующую табличную часть. Тот же унифицированный формат типов.

removeObjectAttribute

Удаление реквизита объекта. Работает как правый клик → «Удалить» в дереве объектов EDT плюс автоматически чистит связанные элементы форм: поля, которые ссылались на удалённый реквизит, убираются со всех форм объекта. После операции формы валидны, обновление конфигурации базы данных проходит без ошибок. Поддерживаются справочники, документы, планы видов характеристик, задачи, бизнес-процессы, планы обмена, регистры (для ресурсов и измерений регистра — отдельная операция removeRegisterField).

removeTabularSection

Удаление табличной части целиком вместе со всеми её реквизитами. Все таблицы на формах объекта, привязанные к этой ТЧ, удаляются со всеми колонками автоматически. Если нужно убрать только один реквизит, оставив ТЧ — используйте removeTabularSectionAttribute.

removeTabularSectionAttribute

Удаление одного реквизита (колонки) табличной части. Саму ТЧ оставляет. Колонки таблиц на формах, ссылавшиеся на удалённый реквизит, убираются автоматически — сама таблица и остальные колонки остаются.

#### Специализированные объекты (6 операций)

addRegisterField / removeRegisterField

Добавление и удаление полей всех 4 видов регистров (сведений, накопления, бухгалтерии, расчёта): ресурсы, измерения, реквизиты. А также признаки учёта и признаки учёта субконто для плана счетов (тип по умолчанию — Булево, как в мастере EDT). Вид поля задаётся на русском или английском. Для реквизитов/ресурсов/измерений тип данных опциональный (по умолчанию Строка длиной 10).

addEnumValue

Добавление значений в перечисление. Одиночный и пакетный режим.

addSubsystemContent / removeSubsystemContent

Включение и исключение объектов из состава подсистемы. Идемпотентно.

setRoleRight

Назначение прав роли на объекты метаданных. Русские и английские имена прав (Чтение/Read, Добавление/Insert и др.). Пакетный режим, идемпотентно.

setDefinedTypeTypes

Задаёт состав определяемого типа (ОпределяемыйТип) одним вызовом. Принимает массив FQN входящих типов: ["CatalogRef.Пользователи", "CatalogRef.ВнешниеПользователи"]. После этого определяемый тип можно указывать как тип реквизита через type: "DefinedType.X".

#### Формы (15 операций)

createForm

Создаёт форму через встроенный генератор EDT. Все типы: форма элемента, списка, выбора, группы, записи регистра, общая. Параметр setAsDefault=true назначает форму основной.

addFormAttribute / addFormAttributeColumn

Реквизиты формы (фильтры, временные таблицы, динамические списки). Колонки можно добавлять в существующие реквизиты-таблицы без пересоздания.

addDynamicListTable

Таблица динамического списка со всеми свойствами, которые появляются у таблицы списка в мастере EDT: строка поиска, автообновление, быстрый отбор над колонками, режим отображения «Список». Колонки задаются вручную или подбираются автоматически по набору полей источника.

Элементы формы

addField — поле ввода (тип определяется автоматически)

addGroup — группа: обычная, страницы, страница, группа колонок, командная панель, группа кнопок

addButton — кнопка с пользовательской командой формы ИЛИ со стандартной командой платформы (PostAndClose, Write, Copy, SetDeletionMark, Generate и др.) — достаточно указать standardCommand, обработчик в модуле формы не нужен, поведение знает сама платформа. Для 22 самых частых стандартных команд (проведение, запись, копирование, перечитать, пометка на удаление, обновить, найти, справка, старт бизнес-процесса, сформировать отчёт и др.) иконка и режим «картинка + текст» проставляются автоматически — кнопка сразу выглядит как в типовых конфигурациях, без отдельного вызова. Поддерживаются параметры расположения (parent, position: top/bottom/индекс).

addTable — таблица для табличной части или реквизита-таблицы формы. Колонки подбираются автоматически из источника данных (как при drag-and-drop ТЧ на форму в EDT) или задаются явно.

addDecoration — надпись для заголовков и пояснений

addRadioButton — переключатель (точки или тумблер) с произвольными вариантами

setProperty

Универсальная установка свойств любого элемента: видимость, доступность, заголовок, цвет, шрифт, картинка, представление, расположение заголовка, размеры, выравнивание, направление раскладки и десятки других. Пакетный режим: за один вызов можно установить сразу несколько свойств одного элемента. Для кнопок — защита от типичной ошибки «установил картинку, а её не видно»: если указывается только picture на кнопке с текстом и дефолтным режимом представления, операция возвращает предупреждение с подсказкой, какой representation задать.

listPictures

Поиск среди 763 стандартных картинок EDT по имени. Для общих картинок конфигурации (из раздела «Общие → Общие картинки») поиск не нужен — используйте формат CommonPicture.ИмяКартинки напрямую в setProperty или setObjectProperty.

addCommandHandler

Создаёт обработчик команды кнопки с правильной директивой. Поддерживает обычные формы и заимствованные (обработчики Перед, После, Вместо).

setupSettingsComposerOnForm

Добавляет на любую форму (обработки, отчёта, общей формы, формы документа) реквизит-композитор настроек компоновки данных с UI-таблицами — как галочка «Настройки на форме» в мастере EDT, но доступно не только отчётам. Ставит сразу: реквизит типа КомпоновщикНастроек, таблицу «Структура» (дерево группировок), группу пользовательских настроек и привязку ExtInfo формы. Опциональный параметр standardItems регулирует, какие UI-таблицы вывести: только структура (по умолчанию), алиас full — полный набор (группировки + отборы + сортировка + условное оформление), либо произвольный список. Ответ операции содержит готовый BSL-пример для обработчика ПриСозданииНаСервере — с корректной передачей схемы через временное хранилище и правильным вызовом ПолучитьМакет в зависимости от того, где лежит макет (обработка / справочник / отчёт / общий). Полный сценарий сборки от объекта до BSL-кода формирования результата — в справочнике через help topic=composerWorkflow.

#### Макеты печатных форм (4 операции)

Полная поддержка создания макетов — от пустого объекта до готовой печатной формы, без переключения в EDT. Макеты можно создавать у справочников, документов, обработок, отчётов, а также как общие макеты конфигурации.

addTemplate

Создание макета. Поддерживаемые типы: табличный документ (по умолчанию), текстовый документ, схема компоновки данных, макет оформления компоновки, двоичные данные, активный документ, HTML-документ, географическая схема, графическая схема, внешняя компонента. Принимает русские имена типов (Табличный, Текстовый, СКД, Двоичные данные, …) и английские.

setTemplateCell

Установка содержимого одной ячейки табличного макета: текст, цвет текста и фона, шрифт (жирный/курсив/подчёркнутый/размер/имя), горизонтальное и вертикальное выравнивание, пометка ячейки как параметра (для подстановки данных при печати).

mergeTemplateCells

Объединение диапазона ячеек табличного макета (от столбца A строки N до столбца B строки M).

drawTemplate

Пакетное заполнение макета одним вызовом: массив ячеек, массив объединений, ширины колонок, высоты строк, именованные области (Шапка, СтрокаТовара, Подвал — на эти имена ссылается код печати через Макет.ПолучитьОбласть("Шапка")). За один вызов можно собрать целый бланк.

Типичный сценарий печатной формы: один createObject + один addTemplate + один drawTemplate со всеми ячейками, объединениями и областями — готовый макет, идентичный нарисованному вручную в EDT. Код вывода печатной формы пишется обычным write_module_source.

#### Расширения (4 операции)

Полная поддержка работы с расширениями конфигурации:

adoptObject

Заимствовать один объект из базовой конфигурации. По умолчанию — только сам объект. С параметром recursive=true — объект вместе со всеми дочерними элементами (реквизиты, табличные части, формы, команды).

adoptObjects

Заимствовать несколько объектов базы одним вызовом по явному списку — например, пять справочников и два документа. Альтернатива многократному вызову adoptObject и альтернатива recursive=true, когда хочется именно эти объекты без их форм и реквизитов. В ответе — результат по каждому объекту отдельно (заимствован, уже был, не удалось). Ошибка на одном объекте не прерывает обработку остальных.

adoptChild

Заимствовать конкретный дочерний элемент: реквизит, табличную часть, форму, команду, измерение, ресурс.

adoptFormItem

Заимствовать элемент внутри заимствованной формы (главный реквизит, команду, параметр).

При добавлении реквизитов со ссылочными типами инструмент автоматически заимствует связанные объекты.

#### Отчёты СКД (22 операции)

Полный цикл создания отчётов со схемой компоновки данных. Все операции работают не только для отчётов: схема компоновки и её наполнение (наборы данных, параметры, группировки, отборы, сортировки и т.д.) теперь доступны также в макетах обработок, справочников, документов, планов счетов, бизнес-процессов, задач и планов обмена — везде, где в 1С бывают макеты типа «Схема компоновки данных». Для не-отчётов указывается имя макета через параметр templateName.

Базовое создание

createReportSchema — создание схемы с готовым скелетом (источник данных, вариант настроек, автополе).

addDataSet — набор данных (запрос, объект, объединение).

addDataSetField — поле в набор данных.

addSchemaParameter — параметр схемы.

Вычисления и итоги

addCalculatedField — вычисляемое поле (выражение над другими полями).

addTotalField — ресурс с агрегацией (Сумма, Количество, Максимум и др.).

Структура настроек

addSettingsGroup — группировка (обычная, детальные записи).

addSettingsTable — таблица с группировками по строкам и колонкам.

addSettingsChart — диаграмма с точками и сериями.

addSettingsSelectedField / removeSettingsSelectedField — управление выбранными полями.

removeSettingsItem — удаление группировки, таблицы или диаграммы.

Отборы, сортировка, оформление

addSettingsFilter — элемент отбора (20+ типов сравнения).

addSettingsFilterGroup — группа отборов (И/ИЛИ/НЕ).

addSettingsOrder — сортировка.

addConditionalAppearance / removeConditionalAppearance — условное оформление с полным набором параметров (формат, цвета, шрифт, отступы и др.).

setDataSetFieldAppearance — статическое оформление поля.

Параметры и варианты

setSettingsParameter — значение параметра схемы.

setOutputParameter — параметры вывода (заголовок, макет оформления, тип диаграммы и др.). Принимает русские и английские названия.

addSettingsVariant — новый вариант отчёта (глубокая копия настроек).

addUserField — пользовательское поле.

Пример создания минимального отчёта — 6 вызовов: создание объекта, схемы, набора данных с запросом, ресурса, группировки и заголовка.

#### Общее (2 операции)

moveItem

Перемещение элемента в другой контейнер на конкретную позицию.

removeItem

Удаление элемента по имени.

#### Пакетные режимы

Большинство операций поддерживают создание нескольких элементов за один вызов — передавайте массив вместо одиночного элемента. Это позволяет, например, создать справочник с 10 реквизитами, табличной частью и формой за 3–4 вызова вместо 15.

createObject принимает сразу реквизиты (attributes) и табличные части с колонками (tabularSections) — полноценный справочник или документ создаётся одним вызовом.

adoptObjects — пакетное заимствование нескольких объектов из базы в расширение по явному списку (альтернатива рекурсивному режиму, когда не нужно тянуть формы и реквизиты).

#### Режим предпросмотра (dryRun)

К любой операции можно добавить параметр dryRun=true — плагин выполнит её внутри транзакции и откатит: в ответе виден полный результат (что было бы создано, какие реквизиты, поля, формы), а в проекте ничего не меняется. Полезно для перепроверки сложных пакетных вызовов и уточнения правильности типов (CatalogRef.X, ОпределяемыйТип.Y) — ошибка резолва типа в режиме предпросмотра не испортит проект.

Режим работает для всех операций конструктора метаданных (создание/модификация объектов, реквизитов, форм, элементов формы, макетов, отчётов СКД). Не поддерживается для adoptObject/adoptObjects/adoptChild и удаления реквизитов/табличных частей — эти операции по устройству платформы используют отдельные механизмы, которые нельзя откатить. При передаче dryRun в такую операцию плагин возвращает внятное пояснение вместо молчаливого применения.

#### Что пока не реализовано

- HTTP-сервисы (HTTPService) — создавайте вручную в EDT.
- Декорация-картинка (пока только надписи).
- Создание проекта расширения с нуля (расширение должно уже существовать в рабочем пространстве).
- Создание подписок на события через createObject.
- Редактирование настроек не-основного варианта отчёта.