Описание инструментов MCP:RSV Server
MCP-сервер MCP:RSV Server предоставляет 28 инструментов для работы с 1С:EDT через AI-ассистента. Инструменты доступны в четырёх профилях в зависимости от вашей роли. Все инструменты работают с любыми типами проектов: конфигурации, расширения, внешние обработки и внешние отчёты.
Профили определяют, какие инструменты видит AI-ассистент:
| Профиль | Назначение | Инструментов | Группы |
|---|---|---|---|
| Аналитик | Изучение конфигурации без внесения изменений | 12 | 3 группы (только чтение) |
| Разработчик | Повседневная разработка: анализ + запись кода + валидация + код-ревью + диагностика + экспорт | 22 | 7 групп |
| Архитектор | Полный контроль: создание объектов, форм, отчётов СКД, юнит-тесты | 25 | 10 групп |
| Архитектор Про | Обновление и объединение конфигураций, журнал версий проекта (git), привязка информационных баз, доработка конфигураций на обычных формах | 28 | 13 групп |
Каждый следующий профиль включает все инструменты предыдущего.
Профиль «Аналитик» — 12 инструментов
Профиль для изучения и документирования конфигураций 1С. Аналитик может исследовать структуру метаданных, читать код, искать зависимости, просматривать формы и справку — без возможности что-либо изменить.
Анализ метаданных (8 инструментов)
Группа для изучения структуры конфигурации: какие объекты есть, из чего они состоят, как выглядят формы, что написано в справке платформы.
Возвращает версию установленной 1C:EDT, номер сборки, дату, а также информацию о Java и операционной системе. Полезно для диагностики и проверки совместимости.
Возвращает список всех проектов, открытых в текущем рабочем пространстве EDT. Каждый проект содержит имя, путь на диске и признак — является ли он проектом 1С. Используйте этот инструмент первым, чтобы узнать точные имена проектов для передачи в другие инструменты.
Возвращает перечень объектов конфигурации с фильтрацией по типу и имени. Поддерживает около 39 типов объектов: справочники, документы, регистры (сведений, накопления, бухгалтерии, расчёта), планы счетов, планы видов характеристик, планы видов расчёта, бизнес-процессы, задачи, перечисления, обработки, отчёты, общие модули, подсистемы, роли и другие.
Для каждого объекта возвращается имя, синоним, количество реквизитов и форм. Поддерживается пагинация — для больших конфигураций всегда указывайте фильтр по типу или маску имени.
Поиск сразу по всей рабочей области. С параметром allProjects объект ищется во всех открытых проектах сразу — в конфигурации, во всех расширениях и во внешних обработках. У каждой находки указан её проект, а в ответе видно, сколько нашлось в каждом и сколько проектов просмотрено. Отвечает на частый вопрос «где вообще лежит этот объект», когда рабочая область собрана из нескольких проектов.
Виды объектов по-русски. Вид пишется как привычно — «Справочник», «Документ», «ОбщийМакет», «ОбщаяКартинка», «ХранилищеНастроек», «ГруппаКоманд» — наравне с английским написанием. Сами эти виды (общие картинки, общие макеты, хранилища настроек, группы команд) тоже перечисляются, а не пропускаются молча.
Возвращает полную структуру конкретного объекта: все реквизиты с типами данных, табличные части с колонками, список форм, команд и модулей. Для разных типов объектов возвращаются специфичные поля — например, у справочников видна иерархия и владельцы, у документов — тип нумерации, у регистров — измерения и ресурсы.
Подсистемы и поиск в меню. Для подсистемы в ответе поля content (FQN включённых объектов), children (полные пути вложенных подсистем) и parent (путь к родителю). Для любого объекта в ответе поле subsystems — массив полных путей подсистем, в которых он упомянут. Один вызов get_object_details Document.Заказ — и агент сразу отвечает пользователю: «этот документ в разделе Продажи → Документы». В параметре objectName принимается путь Subsystem.A.Subsystem.B.Subsystem.C на любую глубину вложенности.
Подробности типов. Тип реквизита показывается с деталями: длина строки (Строка(100), причём Строка(0) — неограниченная длина), разрядность и точность числа (Число(15,2)), состав даты (дата / время / дата и время), пометка индексирования и полный перечень вариантов составного типа. У плана видов характеристик в составе виден отдельный пункт «Тип значения характеристик» (characteristicValueType) и привязанный справочник дополнительных значений (characteristicExtValues). Помогает при разборе ошибок обновления базы — видно, у какого реквизита не задана длина строки и какой индексируется.
Параметры выбора. У реквизита ссылочного типа в составе видны «Параметры выбора» (choiceParameters — постоянный отбор фиксированным значением) и «Связи параметров выбора» (choiceParameterLinks — отбор, зависящий от другого реквизита строки, например подчинённый справочник по владельцу). Те же настройки задаются через edit_metadata, так что агент сначала читает уже настроенное, а потом аккуратно меняет.
Роли и права. Для роли (Role.X) возвращается полный состав: флаги роли («Устанавливать права для новых объектов» и другие), права по каждому объекту — вплоть до прав на отдельные реквизиты, табличные части и команды, — а также ограничения доступа к данным (РЛС) на правах и шаблоны ограничений. Роль перестаёт быть «чёрным ящиком»: агент сначала читает, что уже настроено, и только потом меняет через setRoleRight / setRoleRestriction.
Предопределённые элементы, субконто, состав обмена, XDTO. Чтение симметрично записи — агент видит, что уже настроено, а не только создаёт с нуля. Для плана счетов в ответе видны предопределённые счета и субсчета (predefined) с видом счёта и кодом, назначенные каждому счёту виды субконто (extDimensionTypes) и лимит субконто. Для плана обмена — состав (content): какие объекты входят в обмен и с какой авторегистрацией изменений, плюс признак распределённой ИБ (distributedInfoBase). Для XDTO-пакета — пространство имён, типы объектов с их свойствами (тип, кратность, форма представления в XML) и типы значений.
Чтение по разделам. Состав крупного объекта читается частями: section задаёт нужный раздел (права роли, состав подсистемы, состав типов, реквизиты, формы, макеты, колонки конкретной табличной части через tabularSections.ИмяЧасти), sectionOffset и sectionLimit листают его страницами, а skipContent отдаёт только размеры разделов, без самих списков. Роль типовой конфигурации с тысячами прав больше не приходит одним куском на сотни тысяч символов — агент сам решает, что именно ему прочитать.
Журнал документов. Для журнала документов возвращается его состав: входящие документы и графы — имя, синоним, индексирование и реквизиты документов, из которых графа собрана.
Составной тип и вид макета. Состав составного типа приходит готовым списком отдельных типов — у определяемого типа, константы, плана видов характеристик, реквизита и колонки. У каждого макета сразу указан его вид (табличный, текстовый, HTML, схема компоновки данных), второй вызов не нужен.
Секционирование схемы компоновки. Для отчётов и объектов с макетом схемы компоновки по умолчанию возвращается компактная карта (наборы данных, поля, длина запроса, варианты отчёта), а не всё полотно целиком. Детали дозапрашиваются точечно: dcsInclude — что развернуть, dcsDataSet — конкретный набор данных, dcsVariant — один вариант отчёта. Очень длинный запрос читается частями параметрами dcsQueryLimit / dcsQueryOffset — как длинный документ по страницам, без потери символов на стыках.
Возвращает общие свойства конфигурации: имя, версию, режим совместимости, список подсистем и статистику по количеству объектов каждого типа. Позволяет быстро понять, с какой конфигурацией вы работаете.
Показывает управляемую форму объекта в двух форматах:
- Картинка (PNG) — визуальное представление формы, как она выглядит в 1С.
- Структура (JSON) — полное дерево элементов формы: группы, поля, таблицы с колонками, кнопки, декорации, командные панели формы и таблиц, контекстные меню.
У каждой кнопки указывается связанная команда (стандартная команда платформы или пользовательская), локализованный заголовок, подсказка и установленная картинка. Удобно искать элементы по описанию пользователя — например, «кнопка отмены поиска» → узел с командой CancelSearch.
Расположение элементов: у каждого узла указан порядковый номер внутри родителя (position), направление раскладки группы (childrenGroup: вертикально/горизонтально), положение заголовка, представление кнопки, секция в командной панели. Агент может точно понять, что идёт за чем, и указать место для вставки нового элемента.
Пагинация для больших форм: параметры depth, subtree, maxElements позволяют получать форму частями. На формах типовых конфигураций с сотнями элементов можно сначала взять верхний уровень (depth=1), потом раскрыть нужную ветку (subtree=ПанельКоманд) — без перегрузки контекста.
Снимок из редактора форм: кроме отрисованной по описанию картинки инструмент умеет снять форму такой, какой её видит разработчик в редакторе форм EDT (openEditor). Можно попросить выделить нужный элемент и прокрутить к нему (revealElement) — так проверяется глазами то, что ниже первого экрана. Снимок формы в работающей программе, как её видит конечный пользователь, делает инструмент vanessa операцией screenshot.
Поиск элемента: параметр findElement находит поле в глубине формы по части имени элемента, имени реквизита или подписи и возвращает путь от корня формы — не нужно раскрывать дерево ветку за веткой. Отдельно можно показать только поля составного типа (onlyCompositeFields).
Типы полей: у каждого поля, привязанного к данным, в структуре указан тип, признак составного типа и состав вариантов; отдельным блоком идут типы реквизитов формы и их колонок. Определяемый тип разворачивается в фактический состав — понять, составной ли тип у поля, можно прямо здесь, без второго вызова в другой инструмент.
Размеры и растягивание: режим includeLayout показывает ширину и высоту, максимальные размеры, «Авто максимальную ширину/высоту», растягивание и выравнивание у кнопок, полей, таблиц, колонок и групп. Правка этих свойств через edit_metadata возвращает фактически записанное значение — сделанное сверяется прямо в ответе, без запуска 1С.
Запрос динамического списка: по каждому динамическому списку формы структура показывает его имя, основную таблицу и текст запроса. Короткий запрос приходит целиком, очень длинный — читается частями, как длинный документ по страницам. Агент сначала читает действующий запрос списка, а потом аккуратно дорабатывает его (например, добавляет соединение и поле), ничего не теряя.
Полноценный синтаксис-помощник, доступный AI-ассистенту. Покрывает тысячи топиков:
- API платформы — все типы (Запрос, ТаблицаЗначений, HTTPСоединение и сотни других), их методы, свойства, конструкторы. Поддерживается точечная нотация: Запрос.Выполнить, HTTPСоединение.Получить.
- Встроенный язык — ключевые слова (Если, Для, Пока, Попытка), базовые типы (Число, Строка, Дата, Булево).
- Язык запросов — ВЫБРАТЬ, ИЗ, ГДЕ, СОЕДИНЕНИЕ, ОБЪЕДИНИТЬ, ИТОГИ, ВЫРАЗИТЬ, ПОДОБНО и все агрегатные функции.
- Директивы компиляции — &НаСервере, &НаКлиенте, &НаСервереБезКонтекста и другие.
- Аннотации расширений — &Вместо, &После, &Перед, &ИзменениеИКонтроль.
- Функции СКД — около 130 функций языка выражений системы компоновки данных.
- Справочник форматной строки (typeName=ФорматнаяСтрока) — overlay-статья плагина с параметрами ЧН, ЧДЦ, ДФ, БИ, Л и примерами. Восполняет пробел встроенной документации EDT (там справка по функции Формат отсылает на ИТС). Данные сверены с официальным международным порталом документации 1С:Предприятие.
Поиск работает без учёта регистра и понимает как русские, так и английские имена.
Состав значений системного перечисления. По системному перечислению — СтатусСообщения, ВидСравнения, РазмещениеТекста и другим — приходит полный состав значений: имя, английское имя и описание каждого. Именно за этим к справке и обращаются: чтобы написать код, нужно точное имя значения, а написанное по аналогии роняет программу уже в работающей 1С. Отдельное значение читается и по имени вместе с типом.
Статья принадлежит тому типу, который спросили. Запрос статьи по методу возвращает описание метода именно этого типа либо честный отказ — чужая одноимённая статья вместо нужной не подставляется. В отказе перечислены типы, у которых метод или свойство с таким именем действительно есть, с готовой строкой запроса, и названы близкие по имени члены самого запрошенного типа. То же правило работает для запроса имени без типа: если одноимённых членов много, инструмент показывает список, а не выбирает за агента.
Читает справку, заложенную разработчиками конфигурации в объект метаданных. Это те самые HTML-страницы, которые открываются по кнопке «?» в пользовательском интерфейсе 1С. Дополнительно возвращает комментарий из описания объекта, синоним и список подсистем. Позволяет аналитику получить содержательное описание объекта без погружения в код. Параметр raw отдаёт страницу как есть — с разметкой и оформлением, а не только текстом без тегов: удобно проверить, как справка будет выглядеть у пользователя.
Большая страница читается частями. Если содержимое пришло не целиком, ответ говорит об этом прямо: показывает полный размер страницы и место, с которого читать дальше. Размер куска задаётся вызовом. У объекта с несколькими страницами справки нужную можно назвать по имени, а страницы, оставшиеся без текста, перечислены вместе с тем, как их дочитать — молчаливого обрыва на середине не бывает.
Справка объекта, загруженного в базу. Платформа не отдаёт справочную информацию в описании метаданных информационной базы, поэтому проверяют её так: собрать файл поставки из самой базы, поднять его отдельным проектом (edit_metadata importProject) и прочитать справку по нему. Готовая последовательность вызовов есть во встроенной справке инструмента.
Анализ кода (3 инструмента)
Группа для чтения и исследования BSL-кода: просмотр модулей, чтение методов, сборка контекста по объекту. Читаются и модули обычных форм старых конфигураций (УТ 10.3, УПП и т. п.) — с пометкой ordinaryForm.
Возвращает перечень всех BSL-модулей в проекте с указанием типа (модуль объекта, менеджера, формы, общий модуль), размера в байтах и количества строк. Поддерживает фильтрацию по типу модуля, объекту-владельцу и сортировку по размеру — удобно для поиска самых крупных модулей.
Единый инструмент чтения кода: заменяет отдельные инструменты карты методов, чтения метода и чтения модуля целиком. Работает через штатную модель 1С:EDT — возвращает точные сигнатуры с типами параметров, директивы компиляции, признак «Асинх» и принадлежность к областям, а не приблизительный текстовый разбор. Четыре операции:
- outline — карта модуля: все процедуры и функции с сигнатурами, типами параметров, признаком экспортности, номерами строк и областями (#Область), а также переменные модуля (Перем).
- readMethod — полный текст одной процедуры или функции по имени, с документирующим комментарием и описанием типов параметров. Большой метод можно читать фрагментом по номерам строк.
- readModule — исходный код модуля целиком или по диапазону строк.
- find — поиск текста или регулярного выражения внутри одного модуля: возвращает номера строк совпадений и метод, в котором они находятся. Незаменимо для больших модулей — нужное место находится без чтения всего модуля.
- help — встроенный путеводитель: какая операция подходит для задачи.
Типовой путь: сначала outline для обзора структуры, затем readMethod для нужного метода — без чтения лишних строк. В большом модуле: find находит строку по содержимому → readMethod или readModule показывает её с контекстом.
Единые номера строк. Номера строк во всех операциях чтения и в записи кода — абсолютные, в одном масштабе: номер из ответа одной операции подставляется в другую без пересчёта. Параметр withLineNumbers печатает номера прямо в тексте кода — удобно для последующей точечной правки.
Одним вызовом собирает всю релевантную информацию. Четыре вида цели анализа:
- Объект метаданных —
Catalog.Номенклатура,Document.Х, любой регистр, план видов характеристик, бизнес-процесс и т.д. Возвращает структуру, реквизиты, табличные части, модули, методы, иерархию вызовов, ссылки в коде. - Форма —
Catalog.Х.Form.ФормаСписка,Document.Х.Form.ФормаДокумента. Возвращает дерево элементов, реквизиты формы с типами, параметры, пользовательские и стандартные команды, обработчики событий, путь к модулю. Поддерживает пагинацию (formDepth,formSubtree,formMaxElements) для больших форм. - Общий модуль —
CommonModule.ХилиОбщийМодуль.Х. - Путь к .bsl-модулю — для случаев, когда нужен контекст конкретного файла.
Три режима глубины: minimal (метаданные + список модулей), standard (+ структура методов, по умолчанию), full (+ исходный код + иерархия вызовов + ссылки). Заменяет 5–7 последовательных вызовов отдельных инструментов. Оптимальный первый шаг перед работой с незнакомым объектом или формой.
Точный разбор кода и компактная схема компоновки. Карта методов в контексте строится по той же штатной модели 1С:EDT, что и code_structure — с типами параметров, директивами и областями, без приблизительного текстового разбора. На больших отчётах схема компоновки выводится компактной картой (наборы данных, количество полей, длина запроса, варианты) вместо полного полотна запросов — ответ не переполняет контекст даже у скромных моделей, а детали при необходимости дозапрашиваются через get_object_details.
code_search объединяет полнотекстовый поиск, поиск ссылок на объект, поиск ссылок на метод, переход к определению, иерархию вызовов, поиск по схемам компоновки данных и встроенную справку. Перед каждым вызовом достаточно указать operation:
- textSearch — полнотекстовый поиск по BSL-коду с поддержкой wildcards (*, ?) и точных совпадений по слову. Видит и модули обычных форм старых конфигураций: на УТ 10.3 просматриваются все полторы тысячи форм за доли секунды, совпадения помечены ordinaryForm.
- objectReferences — все ссылки на объект метаданных с учётом всех форм обращения: Справочники.X, СправочникСсылка.X, СправочникМенеджер.X и т.д. Без ложных совпадений по префиксу.
- methodReferences — все ссылки на конкретный метод модуля. Точечнее, чем objectReferences — ищет именно вызовы метода, не упоминания.
- resolveSymbol — переход к определению метода (как F12 в редакторе кода). Возвращает путь к модулю, сигнатуру с параметрами, исходный код, doc-комментарий.
- callHierarchy — кто вызывает метод (incoming) или кого вызывает он сам (outgoing), с рекурсивным обходом до 3 уровней вглубь.
- dcsSearch — поиск по схемам компоновки данных объекта: тексты запросов наборов, поля, параметры, вычисляемые поля, связи наборов, варианты отчёта с отборами и оформлением. Здесь же работают регулярные выражения — в том числе по русским именам полей. Каждое совпадение приходит с точным адресом: схема, область, узел, а для текста запроса ещё и номер строки.
- help — встроенная справка: topic=workflow — путеводитель «какая операция подходит для моего сценария», topic=<имя_операции> — детальное описание с примерами.
Поиск слова целиком. Режим wholeWord требует, чтобы совпадение стояло на границах слова: Сумма перестаёт находиться внутри СуммаДокумента и ОбщаяСумма. Это обычная проверка перед переименованием или удалением — «используется ли ещё это имя». Работает одинаково с русскими и латинскими именами.
Где именно искать. Параметр searchIns задаёт область просмотра: код модулей, формы, макеты, синонимы и заголовки объектов метаданных, реквизиты, команды, измерения и ресурсы регистров, условия ограничений доступа ролей и другие. Без параметра просматривается прежний набор — код модулей, схемы компоновки данных и запросы динамических списков. Неизвестное значение отклоняется с перечнем допустимых: молча сузить область поиска нельзя, иначе пустая выдача читается как «в конфигурации этого нет».
Ссылки на роль. Роль в коде почти не упоминается — её используют метаданные. Поэтому по роли дополнительно просматриваются состав конфигурации или расширения и описания подсистем; найденные упоминания приходят с файлом и строкой. Ответ по роли всегда называет, что просмотрено, а что нет, — чтобы ноль совпадений не читался как «роль нигде не нужна».
Ноль совпадений — ещё не отрицательный ответ. Если в просмотренной области ничего не нашлось, ответ прямо перечисляет, что осталось за её пределами: проекты рабочей области, которые не просматривались, и другие запущенные окна 1С:EDT. Для полноценного «такого в проекте нет» имя проекта указывается явно.
Авто-определение области поиска. Если не указан projectName — плагин сам выбирает разумный scope на основе модели зависимостей 1С:EDT: для объекта основной конфигурации ищет в самой конфе и во всех её расширениях / внешних обработках; для объекта расширения — в проекте-владельце и его «сёстрах» по родительской конфе. Решает проблему «AI-агент ищет не там, где нужно».
Контролируемый размер ответа. Пагинация во всех операциях (limit 1–500, offset) и режим compact=true. Даже на 350 000 совпадений в большой типовой конфигурации инструмент возвращает первые 20 + статистику + топ-5 файлов + признак «есть ещё».
Понимание контекста. При анализе callHierarchy outgoing отделяет реальные вызовы от ключевых слов BSL (Если, Возврат) и слов в строках-комментариях. Простые присваивания вида Менеджер = Документы.Заказ; и последующие Менеджер.Метод() распознаются — у вызова появляются viaVariable, targetObject, resolvedTarget.
Подробный разбор возможностей и результаты тестирования на типовой «1С:Комплексная автоматизация» 2.5 (12 сценариев, 22 100 токенов на весь набор) — в руководстве пользователя.
Профиль «Разработчик» — добавляет 10 инструментов
К 12 инструментам аналитика добавляются инструменты для редактирования кода, отладки, валидации, код-ревью, диагностики производительности, управления сборкой, привязки информационных баз и экспорта внешних обработок. Всего у разработчика 23 инструмента.
Редактирование кода и отладка (2 инструмента)
Записывает BSL-код в модуль объекта метаданных. Поддерживает 6 режимов записи для разных задач:
| Режим | Назначение |
|---|---|
| replace | Замена всего модуля целиком (для пустых или очень маленьких модулей) |
| replaceLines | Замена диапазона строк (для точечных правок) |
| replaceMethod | Замена одного метода по имени (самый безопасный способ изменить метод) |
| append | Добавление кода в конец модуля |
| insertBefore | Вставка перед указанной строкой |
| insertAfter | Вставка после указанной строки |
Безопасность:
- По умолчанию работает в режиме симуляции (dryRun=true) — показывает, что изменится, без реальной записи.
- Автоматически создаёт резервную копию модуля перед записью.
- Блокирует запись, если удаляется более 50% строк модуля (защита от случайной потери кода).
- Проверяет базовую структуру BSL (парность Процедура / КонецПроцедуры, Функция / КонецФункции, Если / КонецЕсли) до записи — повреждённый код в файл не попадает.
- Привязка к содержимому строки. Замена диапазона строк (replaceLines) требует параметра expectedFirstLine — ожидаемого текста первой заменяемой строки; для вставки (insertBefore / insertAfter) то же делает expectedLine. Если номер строки устарел (выше по модулю что-то поменялось и нумерация сдвинулась) и фактическая строка не совпала с ожидаемой — правка отклоняется с понятным объяснением, а не выполняется вслепую. Это исключает «тихую» порчу соседнего кода. Для метода надёжнее всего replaceMethod — он адресуется по имени и не зависит от номеров строк.
Встроенная валидация EDT (автомат). После успешной записи (не dry-run) плагин сам дожидается полной валидации EDT по записанному файлу и возвращает её результат в том же ответе, в поле validation. AI-ассистенту не нужно отдельно звать get_validation_errors — в ответе записи уже лежат маркеры, разнесённые на три группы:
- errors — блокирующие ошибки: код не скомпилируется. Обязательно исправить.
- warnings — семантические предупреждения EDT. Сюда попадают вещи вроде Новый Строка;, обращения к несуществующим глобальным функциям, недопустимые конструкции. Часто реальная ошибка — агент смотрит по checkId и решает.
- codeStyle — рекомендации стиля: короткое имя переменной, метод вне #Область, использование не рекомендуемых методов. Исправлять необязательно.
Плюс счётчики errorCount / warningCount / codeStyleCount и подсказка hint с градацией: где обязательно править, где посмотреть и решить, где можно пропустить. Агент не «тупит» на кодстайле и перестаёт «тихо проскакивать» реальные семантические ошибки, которые EDT помечает мягким уровнем. Цикл «записал → проверил → исправил» замыкается без обращения к пользователю.
Важно: в поле validation попадают только маркеры по записанному файлу, а не весь проект. Посторонние старые ошибки демо-конфигурации не засоряют ответ. Для серии быстрых правок валидацию можно выключить параметром validateAfterWrite=false и позвать её вручную в конце через get_validation_errors.
Новый метод дописывается тем же режимом, что и правка. С параметром createIfMissing режим replaceMethod (и его пакетная форма) дописывает метод, которого в модуле ещё нет, — вставлять по номеру строки не нужно. Новый метод сам ложится в подходящую область: экспортный — в «Программный интерфейс», внутренний — в «Служебные процедуры и функции»; модуль с нуля оборачивается в стандартные области. Раскладка по областям отключается параметром placeInRegions=false. Комментарий-описание над методом при замене тела сохраняется автоматически, а убрать его можно явно.
Проверка имён переменных. Код, где переменная названа как общий модуль или коллекция конфигурации («Пользователи», «Справочники»), отклоняется до записи — в 1С:Предприятии такой код гарантированно падает. Имена берутся из самого проекта и базовой конфигурации, поэтому проверка работает и в расширениях.
Защита от ложных синтаксических ошибок. Прежде чем сообщить о синтаксической ошибке, плагин перепроверяет тот же текст независимым разбором. Если ошибка не подтвердилась — в ответе прямо сказано, что код скорее всего корректен и переписывать его не нужно. Здоровый код больше не переписывается ради «зелёной» проверки.
Автоактивация модуля в расширении. При записи кода в модуль заимствованного объекта расширения (например, &После("ОбработкаПроведения") в модуль документа) плагин сам включает участие этого модуля в расширении — ту самую галочку на вкладке «Расширение» в редакторе объекта в EDT. Без этого получался «тихий баг»: файл модуля на диске, валидация зелёная, а в 1С:Предприятии код не срабатывает. Результат включения возвращается в поле moduleActivation. Для модулей основной конфигурации, модулей форм и native-модулей расширения активация не применяется — агенту возвращается notApplicable с пояснением, никаких изменений.
Полноценный отладчик 1С под управлением ассистента:
- Запуск и завершение — запуск клиента 1С в режиме отладки одной командой (перед запуском база обновляется автоматически; на несинхронизированной базе запуск честно отклоняется с подсказкой вместо зависшего диалога), завершение сессии вместе с окном 1С. Если у проекта нет ни одной конфигурации запуска — она создаётся автоматически.
- Пошаговое выполнение — шаг через строку, вход в метод, выход из метода. Переходы в обработчики расширений (&Перед/&После/&Вместо) явно помечаются в ответе.
- Точки останова — обычные, условные (condition), по счётчику срабатываний (hitCount — например, остановиться на пятой итерации цикла) и по исключению (onException — остановка в момент возникновения ошибки, с фильтром по её тексту). Набор точек ставится одним вызовом; можно заменить все точки модуля или снять все разом; точка на пустой строке отклоняется с подсказкой ближайшей исполняемой. При отладке расширений точка встаёт именно в указанный проект — если путь модуля есть в нескольких проектах, операция перечислит варианты, а не поставит точку наугад.
- Инспекция и вмешательство — чтение переменных, стек вызовов, вычисление произвольных BSL-выражений и изменение значения переменной на лету (setVariable): выполнение продолжается с новым значением, код править не нужно.
Останов по ошибке сразу называет причину. При остановке на исключении обзор состояния и статус возвращают краткий текст ошибки, модуль, номер строки и саму строку кода — агент видит, что и где упало, не собирая это по частям.
Длинные значения целиком. Просмотр значений принимает maxLength, в том числе режим «без ограничения», — текст запроса, JSON или XML читается полностью. Если предел всё-таки достигнут, в ответе названа полная длина и способ получить остальное.
Надёжность на любых базах. Точки останова срабатывают и на файловых, и на клиент-серверных базах: клиент 1С всегда получает доступный адрес сервера отладки — отладка не «молчит» на машинах с несколькими сетевыми адаптерами или системным прокси. Действие status показывает, подключены ли предметы отладки и сколько точек принято, — агент видит реальное состояние, а не гадает.
Типичный сценарий: list_applications → launch → addBreakpoint → пользователь выполняет действие в 1С → getState → getVariables → stepOver → resume. Для отладки юнит-тестов отдельный запуск не нужен — точки ставятся заранее, а базу запускает yaxunit_tests mode=debug. Примеры запросов — в разделе «Отладка» руководства.
Валидация (3 инструмента)
Группа для работы с результатами проверок EDT: ошибки, предупреждения, автофиксы, проверка запросов, код-ревью BSL по стандартам разработки 1С.
Возвращает ошибки и предупреждения из EDT. Для каждой показывает текст на русском, файл, номер строки, начало и конец проблемного участка, тип проверки, есть ли автофикс (Quick Fix), готовую строку подавления // @skip-check … и подробное описание из каталога проверок. Поддерживает автоматическое применение официальных Quick Fix через отдельный режим.
Область выборки (параметр scope):
- session (по умолчанию) — показывает ошибки только в файлах, изменённых в текущей сессии EDT (через инструменты MCP или вручную в редакторе). AI видит ровно то, что сам наработал, и не отвлекается на тысячи старых ошибок демо-конфигурации.
- object — ошибки конкретного объекта метаданных (с objectName=FQN).
- project — все ошибки проекта (осознанный запрос для полного скана, например перед релизом).
- all — все ошибки всех открытых проектов workspace.
Дефолт severity = ERROR — возвращаются только реальные ошибки, предупреждения не засоряют ответ. Нужны — передавайте явно.
Надёжная синхронизация. EDT проверяет код в фоне и помечает результаты не мгновенно — инструмент честно дожидается, пока проверка записанного файла действительно завершится, и только потом отдаёт ответ. Ситуация «AI записал модуль, в EDT появился красный крестик, а инструмент возвращает 0» закрыта.
На крупных конфигурациях (ERP, УТ, БП) первый вызов на свежеоткрытом проекте больше не зависает — в режиме session читаются только маркеры свежих файлов, выдача практически мгновенная даже при десятках тысяч маркеров в проекте.
Разрез по видам замечаний. Кроме разреза по файлам в ответе есть разрез по видам проверок — errorCountsByCheckId (сколько замечаний каждого вида по всей выборке, а не по показанной странице) и distinctCheckIds (сколько разных видов встретилось). Видно, что за замечания пришли и сработал ли отбор, без перебора списка построчно. Сам отбор по виду проверки понимает и краткое написание, и полное имя — то самое, которое инструмент показывает в ответе.
Все виды проверок в одном ответе. Собираются и синтаксические ошибки, и все проверки качества EDT — качество кода по стандартам 1С, формы, метаданные. Повторы автоматически убираются.
Пропускает текст запроса через тот же механизм разбора языка запросов 1С, который работает внутри редактора EDT. Результат такой же, как если бы программист вставил этот запрос в модуль и открыл в редакторе — те же подчёркивания, те же сообщения об ошибках.
Что ловится:
- Все синтаксические ошибки — опечатки в ключевых словах (ВЫБРАТ, СГРУПИРОВАТЬ, УПОРЯДИЧИТЬ), недопустимые токены, незакрытые и лишние скобки, незакрытые строковые литералы, оборванные выражения (ПО Остатки.Товар = без правой части).
- Типовые проверки языка запросов — неверные имена псевдонимов (с точкой или пробелом), проблемы с агрегатными функциями, несогласованные ветки CASE ... КОГДА ... ТОГДА, ошибки в BETWEEN.
- Проверки по вашей конфигурации (при указании проекта в параметре projectName) — существование таблиц (Справочник.Товары) и полей (Товары.Артикул), разыменование через точку, виртуальные таблицы и их параметры, соответствие полей СГРУППИРОВАТЬ ПО, предопределённые значения, совместимость типов. Работает для конфигурации, расширений (видны объекты основной конфигурации) и внешних обработок и отчётов. Без указания проекта проверяются синтаксис и структура, а замечания, зависящие от конфигурации, помечаются отдельно как возможно ложные.
- Проверки для запросов СКД (при 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-ассистента правило вида:
В Claude Code это пишется в CLAUDE.md проекта, в Cursor — в «Rules for AI», в Windsurf — в memories / правилах. Сильные модели (Claude Sonnet 4+, GPT-4o+ и аналоги) такое правило соблюдают стабильно. Слабые могут забывать — им надёжнее напомнить про проверку прямым промптом.
Полностью встроенная автоматика (по аналогии с тем, как write_module_source уже сам возвращает ошибки валидации EDT в поле validation ответа) запланирована на будущий релиз: плагин сам будет находить запросы в записываемом BSL и в наборах данных СКД, проверять их и возвращать результат в том же ответе — агенту не придётся помнить про отдельный вызов.
Чего инструмент пока не делает. Не подключены стилистические проверки 1С-сообщества (соединение с подзапросом, отсутствие индекса у временной таблицы и т. п.).
Автоматическое код-ревью модуля или всего проекта: магические числа, устаревшие методы (Сообщить, ТекущаяДата), код вне области, общий модуль без программного интерфейса, лишняя директива компиляции, пустой блок кода, когнитивная и цикломатическая сложность, вложенный тернарный оператор, хардкод файловых путей и сетевых адресов и другие проверки. Это не ошибки компиляции (их ловит get_validation_errors), а замечания к качеству кода — то, что обычно отмечает старший разработчик при вычитке.
Работает на отдельном бесплатном компоненте. Анализ выполняет компонент MCP:RSV Code Review — самостоятельный плагин EDT, который ставится один раз (см. раздел руководства). Движок анализа — open-source BSL Language Server команды 1c-syntax (лицензия LGPL-3.0); мы его встраиваем, не модифицируя. Если компонент не установлен, инструмент честно сообщит об этом и даст ссылку на установку.
Область проверки. Один модуль по имени объекта (objectName вида CommonModule.X, Document.Y) с указанием типа модуля (moduleType: модуль объекта, менеджера, формы, команды…) или по пути (modulePath). Несколько модулей — списком за один вызов (один скан проекта, замечания только по ним). Область можно сузить до одной процедуры или функции (по имени — границы плагин найдёт сам) либо до диапазона строк: замечания и итоги считаются по выбранному участку, а счётчики всего модуля видны рядом — удобно проверить именно свою правку, не разбирая чужой технический долг. Без указания модуля — ревью всего проекта. Параметр limit ограничивает число замечаний в ответе, offset продолжает список с нужного места, а severity отбирает по важности — сначала ошибки, потом предупреждения, потом информационные. Замечания стиля больше не заслоняют настоящие ошибки: вердикт с числами идёт первой строкой ответа.
Что в ответе. Сводка (total, errors, warnings, info) и список замечаний: файл, номер строки, важность, код диагностики, текст на русском, ссылка на описание. AI-ассистент сразу видит, что и где улучшить, и может предложить или внести исправления.
Набор проверок настраивается галочками на странице Параметры → MCP:RSV → Код-ревью — те же настройки действуют и на ручное ревью в EDT, и на ответ агенту. Подробно с примерами и скриншотами — в руководстве пользователя.
Сборка и управление (5 инструментов)
Запускает обновление информационной базы 1С из проекта EDT — инкрементально или полностью. Тяжёлое обновление идёт в фоне и не срывается: если не уложилось в один вызов, инструмент возвращает Pending вместе с фазой работы, а повторный вызов забирает результат. Сколько ждать в одном вызове — задаётся параметром timeoutSeconds. Если инкрементальное обновление невозможно (база рассинхронизирована после сбоя), автоматически выполняется полная перезагрузка конфигурации; долгую операцию можно прервать.
Сколько ждать — с цифрой. Плагин запоминает, сколько заняли прошлые полные перезагрузки этой базы на этой машине, и ещё до старта долгой операции называет примерное время ожидания, а по завершении — фактическое. Предупреждение о расширениях с включённым «Безопасным режимом» приходит кратко (свои расширения отдельно от чужих, список началом с числом); полный текст запрашивается параметром verboseWarnings. Обновление базы, полная перезагрузка, объединение конфигураций и обновление на релиз поставщика оставляют в журнале EDT отметки начала и конца — проект, база, режим, инструмент-инициатор, итог, — так что потом видно, кто и когда что запускал.
Отказ называет, кто держит базу. Обновлению конфигурации базы данных нужен монопольный доступ, и занятая база его не отдаёт. В отказе перечислены занявшие её сеансы поимённо — пользователь, номер сеанса, время начала, приложение — и отдельно вид держателя, потому что от него зависит, что делать. Держателем часто оказывается не человек, а программа: соединение с HTTP-сервисом опубликованной базы, внешнее соединение, фоновое задание. В таком случае прямо сказано, что закрывать клиенты 1С бесполезно — их нет, и базу отпустит та программа, которая открыла соединение.
Освободить базу, не выходя из вызова. Когда монопольный доступ не даётся, платформа предлагает завершить занявшие базу сеансы и повторить. Плагин показывает этот вопрос вместе с вариантами ответа и умеет на него ответить, но только с вашего разрешения: параметр terminateActiveSessions означает «Завершить сеансы и повторить», а в успешном ответе стоит предупреждение о том, что чужие сеансы прерваны — несохранённые правки в открытых документах при этом пропадают. Если у платформы другой вопрос или нужен другой вариант ответа, его называют явно параметром answerPlatformQuestion — варианты с их кодами приходят в самом отказе и не зависят от языка среды разработки. По умолчанию плагин чужие сеансы не трогает.
Загруженным считается только принятое базой. Загрузка — это два шага платформы: конфигурация попадает в информационную базу, затем обновляется конфигурация базы данных. Второй шаг может сорваться из-за работы в базе — и тогда объект есть в конфигурации информационной базы, но отсутствует в самой базе. Плагин помнит недоделанную работу отдельно от признаков среды разработки: пока шаг не доведён, ответа «база уже актуальна» не будет — повторный вызов доделывает именно его, ничего не загружая заново, и память переживает перезапуск среды. Результат сверяется с самой информационной базой, а не с фактом «вызов завершился без ошибки»: если база изменения не приняла, приходит отказ с перечнем участников — у кого изменения доехали, а у кого нет (частый случай — конфигурация загрузилась, а расширение осталось со старым содержимым).
Старые конфигурации на обычных формах (УТ 10.3, УПП и т. п.): штатный механизм загрузки EDT для них не работает, поэтому база обновляется отдельным конвейером — плагин распознаёт такую конфигурацию сам. Первая загрузка полная (минуты), повторные — частичные, только изменения (десятки секунд). Этот конвейер доступен в профиле «Архитектор Про».
Удаляет скомпилированные файлы и кэш EDT, при необходимости запускает полную пересборку. Помогает при ложных ошибках валидации и устаревших данных.
Возвращает список зарегистрированных информационных баз для проекта с их идентификаторами, типами и состоянием обновления. Основное назначение — получить applicationId, который требуется для запуска отладчика и обновления базы.
Собирает проект из EDT в готовый бинарный файл, который можно сразу открыть или загрузить в 1С. Тип файла подбирается по проекту автоматически: внешняя обработка → .epf, внешний отчёт → .erf, конфигурация → .cf, расширение → .cfe. Один вызов — готовый файл.
- Платформа 1С определяется автоматически по версии проекта
- Работает и для старых обычноформенных конфигураций: например, УТ 10.3 выгружается в .cf, и платформа создаёт из этого файла рабочую базу
- В редком сценарии, когда в одном проекте лежит несколько объектов (две обработки, или отчёт рядом с обработкой), параметр objectName указывает, какой именно собирать. Если objectName не указан при нескольких объектах в проекте — плагин сразу возвращает ошибку со списком доступных имён, а не собирает произвольный первый объект.
- Проверено на Windows; на Linux и macOS должно работать — но прогона пока не было.
Диагностика (1 инструмент)
Группа для разбора жалоб «почему медленно» и «почему упало»: замер производительности, технологический журнал платформы и журнал регистрации — агент отвечает цифрами, а не догадками.
Три дополняющих друг друга уровня диагностики в одном инструменте: какая строка кода медленная — что в это время происходит на уровне СУБД — что вообще происходило в базе.
Замер производительности. Тот же замер, что в Конфигураторе, только включает и читает его агент: measureStart на запущенной сессии отладки (точки останова не нужны), выполняется исследуемое действие — вручную в 1С:Предприятии, тестами YAxUnit или сценарием Vanessa, — и measureStop возвращает топ самых долгих методов и строк: полное и чистое время (без вложенных вызовов), число выполнений каждой строки, где выполнялся код — на клиенте или на сервере. Классический случай «строка быстрая, но выполнилась два миллиона раз» виден сразу. Фоновые задания, запущенные за время замера, тоже попадают в результат: плагин на время замера сам подключает их к отладке (после остановки настройка возвращается как была), а тайминги каждого задания возвращает отдельным блоком backgroundJobs с тем же разбором и пометкой «фоновое задание» — и в клиент-серверной, и в файловой базе. По каждому заданию в общем ответе — компактная выжимка (итоги и самые горячие строки); полный разбор конкретного задания даёт measureResults по его имени, там же поднимается любой прошлый замер. Ответ следит за собственным размером: не помещается в лимит AI-клиента — топы сокращаются автоматически с честной пометкой и подсказкой, как сузить замер (moduleFilter по имени модуля).
Карта выполнения. Тот же замер отвечает и на вопрос «что здесь вообще выполняется»: measureCoverage показывает все методы, реально сработавшие за замер, — не только медленные, — а measureCallers — откуда конкретный метод фактически вызывался в этом сценарии. В отличие от поиска по коду это динамический срез именно вашего прогона: ветки, которые при ваших настройках никогда не выполняются, в него не попадают. Удобно искать точку входа в сложный расчёт — «как в этой базе на самом деле считается себестоимость».
Технологический журнал. Отвечает, какой запрос к СУБД съедает время и как он выглядит, — отладка не нужна. techlogEnable включает журнал с готовым набором (долгие запросы к СУБД, вызовы сервера, исключения, блокировки) и порогом длительности, а techlogAnalyze возвращает готовый разбор: топ самых долгих событий — длительность в миллисекундах, строка кода 1С, из которой выполнялся запрос, и сам текст SQL. Служебные операции СУБД без текста запроса показываются отдельным блоком и не вытесняют реальные запросы из топа, а рядом со счётчиками по типам событий — готовое время работы с СУБД без двойного учёта (одно выполнение платформа пишет двумя слоями, наивная сумма завышает время примерно вдвое). У анализа есть прицел: moduleFilter — только события, в стеке кода которых есть имя своего отчёта или обработки, dateFrom/dateTo — временное окно действия; топ и итоги считаются по цели, отфильтрованный фон не пропадает — его сводка (события, время, главные источники) приходит отдельным блоком, а при прицеле ответ дополняется окном активной фазы действия. Журнал включается только с фильтрами и автоочисткой — диск не зальёт даже забытая сессия; чужая настройка технологического журнала сохраняется и восстанавливается при выключении (techlogDisable), накопленные файлы удаляются одной командой (techlogClear).
Журнал регистрации. Летопись базы — кто входил, что менял, какие ошибки ловили пользователи — читается напрямую из файлов журнала, строго в режиме «только чтение», запускать 1С:Предприятие не нужно. eventlogRead без параметров возвращает ошибки и предупреждения за последние сутки, новые первыми: время, событие, пользователь, объект и полный текст ошибки; дальше — поиск по тексту, фильтры по пользователю, уровням и периоду. eventlogSummary даёт сводку за период: счётчики по уровням, самые частые события и повторяющиеся ошибки.
Типовые сценарии с примерами запросов — в разделе «Диагностика производительности» руководства.
Профиль «Архитектор» — добавляет 3 инструмента (~150 операций)
К 23 инструментам разработчика добавляются конструктор конфигурации (создание объектов метаданных, форм, схем компоновки данных и расширений), инструмент для запуска юнит-тестов YAxUnit с автоматической отладкой и инструмент сценарного UI-тестирования Vanessa. Всего у архитектора 26 инструментов.
edit_metadata — Конструктор конфигурации
Единый инструмент для создания и настройки объектов метаданных, форм, макетов печатных форм и отчётов. Содержит около 150 операций, организованных в 11 областей. Все изменения выполняются через нативные сервисы EDT — после операций не нужно вручную перезагружать формы или обновлять дерево объектов.
Встроенная справка
У инструмента есть собственный справочник, который 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-код инициализацииhelp topic=dynamicListSettings— динамический список на форме: создание, настройка как отчёта, смена запроса и колонокhelp topic=characteristicExtValuesWorkflow— план видов характеристик с дополнительными значениями: подчинённый справочник, привязка, тип значенияhelp topic=schedule— расписание регламентного задания: периодичность, дни недели, дневные интервалы, типовые случаи с примерамиhelp topic=dcsReferenceValues— значения в настройках отчёта: ссылки на элементы перечислений и справочников, пустые ссылки, датыhelp topic=externalObjectsWorkflow— внешняя обработка и внешний отчёт: сборка от объекта до файла, печатная форма, кнопка своей командой
AI-ассистенту не нужно знать внутреннее устройство EDT — он спрашивает у инструмента, что доступно, и получает готовые примеры.
Объекты метаданных (18 операций)
Создаёт любой объект метаданных со всеми свойствами по умолчанию (такими же, как при создании через мастер EDT). Поддерживаемые типы (более 30): справочники, документы, обработки, отчёты, перечисления, регистры (сведений, накопления, бухгалтерии, расчёта), планы счетов, планы видов характеристик и расчёта, бизнес-процессы, задачи, планы обмена, общие модули, общие формы, общие команды, подсистемы, роли, константы, параметры сеансов, регламентные задания, функциональные опции и параметры функциональных опций, определяемые типы, XDTO-пакеты, подписки на события и другие. При создании регистров можно сразу задать измерения, ресурсы и документы-регистраторы. Для справочников, документов, обработок и отчётов — сразу же реквизиты и табличные части с колонками (параметры attributes и tabularSections). Для общих модулей — флаги контекста исполнения (server, serverCall, clientManagedApplication, privileged, global, returnValuesReuse и др.) прямо в вызове: агент получает модуль с нужными галочками, без ручной правки в EDT. Для подписки на событие — источник (один тип или массив типов), имя события (ОбработкаПроведения / Posting, ПриЗаписи / OnWrite и т.д.) и обработчик ОбщийМодуль.Метод; сразу после создания в указанный общий модуль автоматически дописывается процедура-заглушка с правильной сигнатурой (первым параметром идёт Источник, остальные — по описанию события) и пометкой Экспорт — агенту остаётся только написать тело. Для подсистем поддерживается путь с родителем: Subsystem.Продажи.Subsystem.Документы создаёт «Документы» как вложенную подсистему внутри «Продажи», на любую глубину вложенности. Для HTTP-сервиса — корневой URL (rootURL) и сразу массив URL-шаблонов через urlTemplates, каждый шаблон со своими HTTP-методами и именами обработчиков: пустой сервис → готовый REST-API за один вызов, с процедурами-заглушками в модуле сервиса. Для регламентного задания — сразу все свойства (метод, использование, ключ, предопределённость, повторы при аварийном завершении) и готовое расписание, описываемое теми же понятиями, что окно «Расписание» в свойствах задания: периодичность в днях и неделях, дни недели, месяцы, повтор в течение дня и дневные интервалы; типовые случаи — «каждый день в 03:00», «по будням каждые 30 минут» — собраны в справке help topic=schedule, а если указанного общего модуля в конфигурации нет — ранний отказ с подсказкой вместо ошибки при обновлении базы. Всё создаётся одним вызовом — справочник с пятью реквизитами не требует шести отдельных запросов. Обязательные параметры для специфичных типов проверяются на входе — например, функциональная опция не создастся без ссылки на константу-хранилище; подписка — без указания события, которое реально есть у всех указанных источников.
Изменение свойств объекта: иерархия, тип кода, длина кода, длина наименования (descriptionLength), проведение, формы по умолчанию, периодичность регистра, картинка подсистемы и т.д. Картинки принимаются в двух форматах: стандартные (CreateFolder) и общие картинки конфигурации (CommonPicture.МояКартинка). Поддерживает и ссылочные свойства: owners — сделать справочник подчинённым (например, плану видов характеристик), characteristicExtValues — привязать к плану видов характеристик справочник дополнительных значений характеристик, extDimensionTypes — связать план счетов с планом видов характеристик, где описаны виды субконто (вместе с maxExtDimensionCount — лимит видов субконто на счёт), distributedInfoBase — пометить план обмена как распределённую информационную базу (РИБ). Пакетный режим, русские и английские значения. При неизвестном имени свойства инструмент подсказывает самые близкие по написанию существующие свойства — защита от опечаток и созвучных имён. Расписание существующего регламентного задания задаётся, заменяется и снимается этой же операцией — ошибочные значения (день недели 8, время «25:00») отклоняются с точным указанием причины и не портят текущее расписание.
Добавление реквизитов на объекты всех типов, у которых они вообще бывают: справочники, документы, обработки, отчёты, все 4 вида регистров, планы счетов, планы видов характеристик и расчёта, бизнес-процессы, задачи, планы обмена. Тип данных можно не указывать — по умолчанию ставится Строка длиной 10, как при нажатии кнопки «+ Реквизит» в EDT. Принимаются все примитивы (включая ХранилищеЗначения, ДвоичныеДанные, УникальныйИдентификатор, ТабличныйДокумент), ссылочные типы и определяемые типы (DefinedType.X / ОпределяемыйТип.X). Имена типов работают и по-русски, и по-английски. Пакетный режим. Идемпотентно: повторный вызов с тем же именем не создаёт дубль — возвращается alreadyExists: true и skipped: [...]. Если при повторе переданы другие свойства (длина, тип, заголовок), существующий реквизит не переписывается молча — в ответе появляется propertyMismatch с парами requested / existing и подсказкой, что для обновления свойств используется setObjectProperty. То же поведение у addTabularSection, addTabularSectionAttribute, addEnumValue, addRegisterField.
Составной тип сразу при создании. Реквизит «и контрагент, и физлицо» заводится одним вызовом — список типов передаётся параметром types, у каждого своя длина строки, точность числа и состав даты. Работает и внутри пакетного создания объекта через createObject, и для колонок табличных частей, полей регистров и реквизитов формы. Принимаются обобщённые записи «СправочникСсылка», «ДокументСсылка», «ЛюбаяСсылка» (и их английские варианты), а также ссылка на сам создаваемый объект — например, договор с реквизитом «главный договор» собирается за один вызов. Признак «Неотрицательное» для числового реквизита задаётся тут же параметром nonNegative.
Создание табличной части сразу с колонками. Тип колонки опциональный — как в addObjectAttribute.
Добавление колонок в уже существующую табличную часть. Тот же унифицированный формат типов.
Задаёт тип значения у уже существующего элемента: тип значения характеристик плана видов характеристик, тип реквизита или колонки табличной части, измерения либо ресурса регистра, значения константы. Принимает один тип или составной (несколько типов сразу) с уточнением длины строки, разрядности и точности числа, состава даты. В расширении ссылочные типы (CatalogRef.X и подобные) заимствуются автоматически.
Меняет тип уже существующего реквизита без удаления и пересоздания — сохраняет его порядок в списке и все ссылки на него. Решает типичную задачу «поменяй тип реквизита Артикул на число» одним действием, без потери привязок на формах и в коде.
Правка состава типов, а не только замена. К уже заданному составному типу можно добавить один тип или убрать отдельный (removeTypes), не перечисляя весь состав заново: «добавь в критерий отбора ещё один вид документа» — один вызов. Полная замена состава делается явным replace, поэтому случайно стереть остальные типы нельзя. Работает для реквизитов и колонок табличных частей, критериев отбора, констант, параметров сеанса, общих реквизитов, определяемых типов, планов видов характеристик, измерений и ресурсов регистров, реквизитов форм — в конфигурации, расширении и внешней обработке. Этой же операцией ставится признак «Неотрицательное» (nonNegative) у числового реквизита.
Колонка формы под табличной частью. Тип колонки, существующей только на форме, меняется по пути «реквизит формы → табличная часть → колонка» — колонку не нужно удалять и создавать заново, настройки связанного с ней элемента формы сохраняются.
Удаление реквизита объекта. Работает как правый клик → «Удалить» в дереве объектов EDT плюс автоматически чистит связанные элементы форм: поля, которые ссылались на удалённый реквизит, убираются со всех форм объекта. После операции формы валидны, обновление конфигурации базы данных проходит без ошибок. Поддерживаются справочники, документы, планы видов характеристик, задачи, бизнес-процессы, планы обмена, регистры (для ресурсов и измерений регистра — отдельная операция removeRegisterField).
Удаление табличной части целиком вместе со всеми её реквизитами. Все таблицы на формах объекта, привязанные к этой ТЧ, удаляются со всеми колонками автоматически. Если нужно убрать только один реквизит, оставив ТЧ — используйте removeTabularSectionAttribute.
Удаление одного реквизита (колонки) табличной части. Саму ТЧ оставляет. Колонки таблиц на формах, ссылавшиеся на удалённый реквизит, убираются автоматически — сама таблица и остальные колонки остаются.
Удаление объекта метаданных целиком — со всеми реквизитами, табличными частями, формами, командами, макетами. Перед удалением плагин автоматически чистит входящие ссылки: при удалении регистра он снимается со всех документов, где был указан как регистратор; при удалении документа очищается список его регистров-движений; объект убирается из состава всех подсистем. По правилам безопасности эта операция требует явного подтверждения от пользователя — AI-ассистент не вызывает её самостоятельно «для порядка» и обязан перечислить, что именно будет удалено и какие ссылки разорвутся, прежде чем выполнять.
Принимает и внешнюю обработку или внешний отчёт — удаляется сам объект вместе со своими формами, макетами и модулями, а проект внешних обработок остаётся на месте. Как и у остальных операций, доступен режим предпросмотра: сначала видно, что именно уйдёт, и только потом изменение применяется.
Создание объектной команды (Catalog/Document/... — кнопка «Добавить → Команда» в дереве объекта в EDT). Одной операцией: объект Command в дереве владельца + файл CommandModule.bsl со стандартной заглушкой Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) (русский ScriptVariant) или CommandProcessing(...) (английский) — тело пустое, заполняется через write_module_source. Принимает параметры команды: commandParameterType (FQN-строка или массив для составного типа), parameterUseMode (Single/Multiple), group (группа размещения), representation, picture, tooltip, modifiesData, shortcut. Имя картинки проверяется до записи: при опечатке плагин возвращает success=false с подсказкой о близких именах в реестре платформы. Дальше команду можно положить в командную панель или навигационную панель формы через addFormCommandInterfaceItem. Общая команда (CommonCommand) создаётся через createObject с тем же набором параметров.
Обратная операция к createObjectCommand: удаление команды объекта или общей команды (CommonCommand). Стирает CommandModule.bsl с диска и убирает ссылку из .mdo-файла владельца. Если команда размещена в командной панели или навигационной панели какой-то формы (через addFormCommandInterfaceItem) — перед удалением её нужно убрать из формы операцией removeFormCommandInterfaceItem, иначе ссылка в форме станет битой.
Переименование справочника, документа, формы, реквизита, табличной части и других элементов конфигурации — тем же механизмом, что «Рефакторинг → Переименовать» в EDT. Вместе с именем обновляются файлы и папки проекта, синоним (если он совпадал с именем), ссылки в других объектах, пути к данным на формах; заимствованные копии в расширениях переименовываются синхронно. Попытка сменить имя через setObjectProperty тоже выполняется как полноценное переименование — проект не расходится сам с собой. Часть мест переименование в принципе не может обновить само (строки запросов, алиасы, пути колонок динамических списков) — после операции такие оставшиеся упоминания старого имени возвращаются списком прямо в ответе: файл, строка, текст и подсказка, чем какое место чинить.
Имя конфигурации и расширения. Переименовать можно и сам корень — конфигурацию или расширение целиком. Это нужно, чтобы завести копию доработки: два расширения с одинаковым именем в одной информационной базе не уживаются. На большой конфигурации переименование идёт в фоне, а результат забирается повторным вызовом с теми же параметрами.
Заполнение справочной информации объекта — той самой, что пользователь 1С:Предприятия открывает кнопкой «?» (F1) в формах справочника, документа, отчёта. AI описывает, как работать с объектом, обычным текстом или markdown, а плагин превращает это в страницу справки в фирменном стиле платформы: заголовки, списки, таблицы, ссылки, оглавление. Работает для всех прикладных объектов и для конфигурации в целом, поддерживает многоязычные конфигурации и включение раздела в общее содержание справки. Оформление страницы задаётся параметром css — просьба «сделай шрифт крупнее» закрывается одним вызовом; стили, присланные внутри самого текста справки, тоже применяются. Проверить результат можно чтением через get_object_help с параметром raw — страница вернётся как есть, с разметкой и оформлением.
Правка на месте, без пересылки всей страницы. Параметр mode задаёт, что делать с уже существующей справкой: replace — заменить страницу целиком (по умолчанию), append — дописать в конец, prepend — дописать в начало, replaceFragment — заменить найденный фрагмент. Заменяемый кусок задаётся параметром find дословным текстом страницы; если он не найден или встречается несколько раз, операция отказывает и страницу не трогает — угадывать, какое из мест менять, она не станет. Добавить в большую страницу одно предложение больше не значит вычитать её целиком, собрать заново и отдать обратно одним куском. Большое содержимое можно передать файлом (htmlFile) вместо параметра.
Оформление не копится. При правке на месте стили раскладываются только по новому куску, поэтому страница не разрастается с каждым вызовом. Одно и то же свойство попадает в тег один раз, и побеждает то значение, которое победило бы в браузере: заданное точнее, а помеченное !important обычным не перебивается; собственное оформление автора, написанное прямо в теге, по-прежнему главнее. Если ровно те же правила на странице уже есть, второй такой же блок в заголовок не добавляется — об этом сказано в ответе.
Расширения. Записать справку заимствованному объекту базовой конфигурации нельзя, и операция отказывает сразу, объясняя причину: платформа не относит справочную информацию к свойствам, которые расширение вправе менять, поэтому такая страница не попала бы ни в файл поставки, ни в информационную базу, а пользователь продолжал бы видеть справку базовой конфигурации. Собственным объектам расширения справка ставится как обычно.
Создание предопределённых элементов: элементы и группы справочников, счета и субсчета планов счетов, виды характеристик, виды расчёта. Вся иерархия (группа с вложенными элементами, счёт с субсчетами) создаётся одним вызовом. Для счетов можно сразу задать вид (активный / пассивный / активно-пассивный) и признак забалансового. Повторный вызов ничего не дублирует.
Удаление предопределённого элемента — элемента или группы справочника, счёта плана счетов (вместе с его субсчетами), вида характеристик или расчёта. Обратная операция к addPredefined: создание, чтение и удаление предопределённых элементов работают симметрично, так что агент свободно правит уже настроенный объект, а не только создаёт с нуля.
Специализированные объекты (31 операция)
Добавление и удаление полей всех 4 видов регистров (сведений, накопления, бухгалтерии, расчёта): ресурсы, измерения, реквизиты. А также признаки учёта и признаки учёта субконто для плана счетов (тип по умолчанию — Булево, как в мастере EDT). Вид поля задаётся на русском или английском. Для реквизитов/ресурсов/измерений тип данных опциональный (по умолчанию Строка длиной 10).
Добавление значений в перечисление. Одиночный и пакетный режим.
Включение и исключение объектов из состава подсистемы. Идемпотентно.
Переносит уже существующую подсистему (раздел командного интерфейса) внутрь другой — параметр parent — или обратно на верхний уровень. Вместе с подсистемой переезжают её состав, свойства и вложенные подсистемы, на любую глубину. Ту же иерархию можно задать сразу при создании: createObject принимает путь вида Subsystem.Продажи.Subsystem.Документы. Работает и в расширении — в том числе когда свой раздел вкладывается в заимствованный типовой.
Состав функциональной опции. Наполняет состав опции — как вкладка «Состав» в редакторе: объекты целиком, отдельные реквизиты, табличные части, команды. Те же операции наполняют список «Использование» параметра функциональных опций (справочники и измерения регистров). Сама опция — с хранилищем в константе или реквизите справочника — и параметр создаются через createObject; хранилище существующей опции меняется через setObjectProperty (свойство location). При чтении через get_object_details видны состав опции, использование параметра и обратный поиск — в состав каких опций входит сам объект или его реквизиты, без перебора всех опций конфигурации.
Назначение прав роли на объект метаданных целиком или на его вложенный элемент: реквизит (Catalog.Клиенты.Attribute.Паспорт), табличную часть (Document.Заказ.TabularSection.Товары), колонку ТЧ (Document.Заказ.TabularSection.Товары.Attribute.Цена), команду объекта (Catalog.Товары.Command.ОткрытьОтчёт), измерение или ресурс регистра. Одним вызовом можно, например, закрыть отдельному реквизиту с персональными данными право просмотра для роли оператора, оставив доступ ко всему справочнику в целом. Набор допустимых прав для каждого типа цели платформа определяет сама. Русские и английские имена прав (Чтение/Read, Добавление/Insert и др.). Пакетный режим, идемпотентно. Ведёт себя ровно как редактор прав в EDT: вместе с правом автоматически проставляются зависимые (дали «Изменение» — «Чтение» встанет само; сняли «Чтение» — снимутся и зависящие от него), что добавилось автоматически — видно в ответе. Права ставятся и на конфигурацию целиком: запуск тонкого клиента, веб-клиента, администрирование и т.п. Полный состав роли — флаги, права по объектам, ограничения и шаблоны — читается через get_object_details.
Ограничения доступа к данным (РЛС)
Роль настраивается вместе с ограничениями доступа на уровне записей — когда пользователь видит не весь справочник или журнал, а только «свои» данные. Условием может быть запрос на языке ограничений, макрос вида #ЗначениеРазрешено(…) или вызов шаблона роли.
setRoleRestriction — ограничение на право (Чтение, Добавление, Изменение или Удаление). Для права «Чтение» ограничение можно сузить до конкретных полей объекта; имена полей проверяются до записи — при опечатке агент получает список доступных полей, а не сломанную роль.
removeRoleRestriction — снятие ограничения с права.
setRestrictionTemplate / removeRestrictionTemplate — шаблоны ограничений роли: повторный вызов с тем же именем просто заменяет текст шаблона.
Лечение прав ролей, потерявших смысл. Права роли хранятся отдельно от самой роли, поэтому в проекте накапливаются записи, указывающие в пустоту: права на объекты, которых в проекте больше нет, и права ролей, которых больше нет самих. Берутся они от прежних версий конфигурации, от переключения веток в системе контроля версий, от удаления файлов мимо среды разработки. Для проекта это тихая мина: обновление информационной базы после такого перестаёт проходить — платформа выгружает права по каждой роли отдельно, не находит роль и прерывает обновление, не называя виновника. Перезапуск среды и удаление лишних объектов не помогают.
Операция снимает такие записи по всему проекту или по одной роли (objectName вида Role.Кладовщик; без него проверяются все роли). Права на живые объекты не трогаются ни при каких условиях. Режим предпросмотра (dryRun) показывает находки, ничего не меняя. В ответе — сколько ролей проверено, сколько записей снято и по каким ролям. Отдельно искать причину не нужно: отказ sync_database сам называет виноватые роли поимённо и даёт готовый вызов лечения.
Задаёт состав определяемого типа (ОпределяемыйТип) одним вызовом. Принимает массив FQN входящих типов: ["CatalogRef.Пользователи", "CatalogRef.ВнешниеПользователи"] — у каждого типа можно сразу указать разрядность: число 15 знаков с 3 после запятой, строка на 150 символов, дата «только время». Если хотя бы один тип из списка не распознан, состав не меняется вовсе — вместо частично применённого списка возвращается понятная ошибка. После этого определяемый тип можно указывать как тип реквизита через type: "DefinedType.X".
Дописывает процедуру-заглушку обработчика в общий модуль по уже существующей подписке. При создании подписки через createObject заглушка пишется автоматически, если общий модуль уже существует. Отдельный вызов нужен, когда модуль создали позже подписки, либо когда изменилось имя метода в обработчике и нужна свежая заглушка. Плагин сам берёт из подписки источник, событие и обработчик, вычисляет сигнатуру и пишет процедуру. Идемпотентно: если метод уже есть, возвращается handlerAlreadyExists: true и ничего не меняется. Параметр force: true перезаписывает существующий блок Процедура…КонецПроцедуры свежей заглушкой. Режим предпросмотра (dryRun: true) возвращает планируемую сигнатуру без записи.
Субконто на счетах плана счетов. Назначает предопределённому счёту (или субсчёту) вид субконто — то, что в EDT редактируется в табличной части «Виды субконто» счёта; обратная операция убирает его. Субконто можно пометить оборотным (turnover). После назначения по счёту в движениях документа заполняется аналитика (СубконтоДт/СубконтоКт), а в отчётах доступны итоги в разрезе субконто. Виды субконто берутся из плана видов характеристик, связанного с планом счетов через setObjectProperty extDimensionTypes; число субконто на счёт ограничено свойством maxExtDimensionCount. Если чего-то не хватает (не задан план видов характеристик, нет такого счёта или вида субконто, превышен лимит) — операция честно сообщает об этом и подсказывает, что сделать, а не оставляет счёт в половинном состоянии. Идемпотентно: повторное назначение того же вида субконто не дублируется.
Состав плана обмена. Наполняет состав плана обмена — указывает, какие справочники, документы и регистры участвуют в обмене, и задаёт каждому авторегистрацию изменений: Allow (изменения объекта автоматически попадают в очередь на выгрузку узлам) или Deny. Объекты добавляются по одному или списком: единый параметр content с общей авторегистрацией autoRecord, либо массив items с разной авторегистрацией по объектам. Повторное добавление того же объекта не дублирует строку, а обновляет его авторегистрацию; обратная операция убирает объект из состава (сам объект не удаляется). После наполнения в плане обмена можно заводить узлы и регистрировать изменения для обмена данными. Распределённая ИБ (РИБ) включается через setObjectProperty distributedInfoBase.
Бизнес-процессы и задачи
Бизнес-процесс собирается под ключ: сам объект — через createObject BusinessProcess (с привязкой к задаче), а его карта маршрута и адресация связанной задачи — операциями ниже. Карта маршрута и адресация видны и при чтении объекта через get_object_details / ai_context.
createRouteMap — карта маршрута бизнес-процесса одной командой: точки (Старт, Действие, Условие, Выбор, Разделение, Слияние, Обработка, Вложенный процесс, Завершение) и переходы между ними. Плагин сам расставляет точки ярусами и заводит в модуле заготовки процедур-обработчиков с правильной сигнатурой события (существующие не перезаписываются).
getRouteMap — чтение текущей карты: точки с видами и обработчиками, переходы с подписями веток.
removeRouteMap — удаление карты маршрута целиком (сам бизнес-процесс остаётся).
setTaskAddressing — адресация задачи: регистр сведений адресации, реквизиты адресации с привязкой к измерениям регистра, основной реквизит и параметр сеанса «текущий исполнитель». Любую часть можно задать отдельно и дополнять повторными вызовами.
XDTO-пакеты: типы и свойства
XDTO-пакет создаётся через createObject XDTOPackage и наполняется целиком одной серией команд — раньше пакет можно было только создать пустым, а содержимое набивалось вручную в EDT. Типы сразу работают во встроенном языке через ФабрикаXDTO: по ним можно создавать объекты, заполнять свойства, сериализовать в XML и читать обратно — типовой сценарий обмена данными.
setXdtoNamespace — пространство имён пакета (URI).
addXdtoObjectType — тип объекта (структура со свойствами). Можно указать базовый тип-наследование.
addXdtoValueType — тип значения (простой тип на базе примитива XSD, аналог typedef с ограничениями).
addXdtoProperty — свойство типа объекта: тип-примитив XSD (строка, число, дата, булево…), ссылка на другой тип этого же пакета или явное пространство имён; кратность (lowerBound/upperBound — необязательное, список) и форма представления в XML (элемент, атрибут, текст).
removeXdtoType / removeXdtoProperty — удаление отдельного типа (с его свойствами) или свойства. Создание, чтение и изменение содержимого работают симметрично.
HTTP-сервисы (4 операции)
Добавление и удаление URL-шаблонов внутри HTTP-сервиса. Шаблон — это путь, по которому сервис принимает входящие запросы, например /users/{id}; параметры в фигурных скобках доступны обработчику через ПараметрыURL. Удаление шаблона забирает с собой все его HTTP-методы.
HTTP-методы внутри URL-шаблона: GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD и другие. При создании метода в модуль HTTP-сервиса автоматически дописывается процедура-заглушка обработчика с правильной сигнатурой и пометкой Экспорт — после обновления информбазы сервис уже отвечает (пустым ответом), тело обработчика дописывается через write_module_source.
Формы (31 операция)
Создаёт форму через встроенный генератор EDT. Все типы: форма элемента, списка, выбора, группы, записи регистра, общая. Параметр setAsDefault=true назначает форму основной.
Удаляет одну форму объекта, не трогая сам объект, его данные и остальные формы — тем же механизмом, что удаление формы в дереве объектов EDT. Типовой сценарий: после восстановления рабочей формы убрать старую сломанную, чтобы она не путала ни разработчика, ни агента. Форму, назначенную формой по умолчанию, операция удалять отказывается — сначала нужно назначить другую; при этом пустое значение свойства «форма по умолчанию» в setObjectProperty честно очищает его. В ответе видно, какие формы у объекта остались.
Реквизиты формы (фильтры, временные таблицы, динамические списки). Колонки можно добавлять в существующие реквизиты-таблицы без пересоздания.
Параметр открытия формы — «вход» формы: значение, которое передают в форму в момент её открытия (например, открыть форму заказа сразу с нужным заказом, чтобы оно пришло в обработчик ПриСозданииНаСервере). Это не то же самое, что реквизит формы: реквизит хранит данные внутри формы, а параметр принимает их при открытии. Создаётся с нужным типом и, при необходимости, признаком «ключевой».
Удаление реквизита формы по имени. Параметр deleteDataItems переключает поведение: при true (по умолчанию) удаляется и сам реквизит, и связанные элементы формы — таблица с колонками и поля, которые на него ссылались; при false сами элементы остаются на форме с сохранёнными привязками к удалённому реквизиту. В ответе появляется поле preservedDataPaths со списком сохранённых ссылок (Table:ТаблицаСводка → /Сводка, FormField:Колонка1 → /Сводка/Колонка1 и т.д.) — полезно для типичного сценария «удалить реквизит и пересоздать его с другой структурой колонок» за два вызова, без необходимости пересоздавать таблицу и поля вручную.
Таблица динамического списка со всеми свойствами, которые появляются у таблицы списка в мастере EDT: строка поиска, автообновление, быстрый отбор над колонками, режим отображения «Список». Список создаётся из справочника, документа или регистра либо из произвольного запроса; колонки задаются вручную или подбираются автоматически по полям источника. Готовый список настраивается как отчёт — отбор, порядок, группировка, условное оформление, выбранные и вычисляемые поля, параметры; у него можно поменять запрос, основную таблицу, ключи и режимы работы, а также добавлять, переименовывать и удалять колонки. Путь колонки принимается и привычным Список.Поле, и ровно так, как он показан в просмотре формы — [Список, Поле]. В расширении все объекты, на которые опирается запрос списка (основная таблица и таблицы соединений), заимствуются автоматически. Типовой сценарий — в справке через help topic=dynamicListSettings.
Элементы формы
addField — поле на форме. По умолчанию вид определяется автоматически по типу реквизита (строка → поле ввода), но можно сразу задать конкретный вид параметром fieldType: поле HTML-документа (в нём отображается размеченный HTML и работает встроенный JavaScript — удобно для дашбордов и нестандартного интерфейса), текстового, табличного или форматированного документа, поле картинки, календарь, поле периода, индикатор, полосу регулирования, диаграмму, графическую и географическую схему и другие. Плагин проверяет, что выбранный вид совместим с типом реквизита (календарь — для даты, HTML-поле — для строки и т.д.); при несовместимости — ранний отказ со списком доступных видов, поле не создаётся.
addGroup — группа: обычная, страницы, страница, группа колонок, командная панель, группа кнопок
addButton — кнопка с пользовательской командой формы ИЛИ со стандартной командой платформы (PostAndClose, Write, Copy, SetDeletionMark, Generate и др.) — достаточно указать standardCommand, обработчик в модуле формы не нужен, поведение знает сама платформа. Для 22 самых частых стандартных команд (проведение, запись, копирование, перечитать, пометка на удаление, обновить, найти, справка, старт бизнес-процесса, сформировать отчёт и др.) иконка и режим «картинка + текст» проставляются автоматически — кнопка сразу выглядит как в типовых конфигурациях, без отдельного вызова. Поддерживаются параметры расположения (parent, position: top/bottom/индекс).
addTable — таблица для табличной части или реквизита-таблицы формы. Колонки подбираются автоматически из источника данных (как при drag-and-drop ТЧ на форму в EDT) или задаются явно. В автогенерации имена полей получают префикс имени ТЧ — ТоварыКоличество, УслугиКоличество — как делает мастер «Добавить форму» в EDT. Две табличные части с одноимёнными колонками на одной форме не создают коллизии имён.
addDecoration — надпись для заголовков и пояснений
addRadioButton — переключатель (точки или тумблер) с произвольными вариантами
Универсальная установка свойств любого элемента: видимость, доступность, заголовок, цвет, шрифт, картинка, представление, расположение заголовка, размеры, выравнивание, направление раскладки и десятки других. Свойством view можно сменить вид уже существующего поля — сделать его полем HTML-документа, картинки, календарём, индикатором и т.д. (тот же набор видов, что у fieldType при создании, с той же проверкой совместимости с типом реквизита). Пакетный режим: за один вызов можно установить сразу несколько свойств одного элемента. Для кнопок — защита от типичной ошибки «установил картинку, а её не видно»: если указывается только picture на кнопке с текстом и дефолтным режимом представления, операция возвращает предупреждение с подсказкой, какой representation задать. При установке format или editFormat (форматная строка для числовых, датовых и булевых полей) в ответе появляется поле formatHelp — короткая подсказка с типовой ловушкой (параметр ЧН не указан — ноль скрывается; ЧН=0 — ноль показывается как «0») и указатель на справочник get_platform_docs typeName=ФорматнаяСтрока.
Задаёт состав автокомандной панели: какие стандартные команды скрыть из автозаполнения — как «Состав команд» панели в редакторе формы EDT, где снятая галочка означает, что команда в 1С:Предприятии не показывается. Настраивается панель самой формы (без elementName) или панель таблицы на форме. Параметр commands — полный список исключённых, а не добавка к нему: каждый вызов заменяет состав целиком, а пустой список снимает все исключения. Текущий состав виден в просмотре формы через get_form_image. Незнакомое имя команды отклоняется со списком доступных. Работает в конфигурациях, расширениях (у заимствованной формы исключения не перезатираются обновлением из базы) и во внешних обработках и отчётах.
Назначает функциональные опции реквизиту или команде формы — то самое свойство «Функциональные опции» из палитры редактора форм. Передаётся полный список опций; пустой список — очистить. Назначения видны при чтении формы: get_form_image показывает блок functionalOptions, так что причина «элемент на форме есть, а в 1С не виден» не прячется.
Поиск среди 763 стандартных картинок EDT по имени. Для общих картинок конфигурации (из раздела «Общие → Общие картинки») поиск не нужен — используйте формат CommonPicture.ИмяКартинки напрямую в setProperty или setObjectProperty. Картинка находится и по русскому названию, и по английскому, и по представлению общей картинки конфигурации; в ответе показаны оба названия сразу — первым то, которое будет видно в форме (например «Печать» и StdPicture.Print).
Возвращает полям формы нормальные подписи вместо технических имён — ровно те, что подставил бы редактор форм при добавлении поля вручную. Одним вызовом обрабатывается одна форма, все формы объекта или весь проект (maxForms и offset — порциями, если форм много). Подписи, заданные разработчиком руками, не трогаются. Есть отчёт без изменений — сначала видно, что именно будет исправлено, и только потом правка применяется. Параметр fixLanguage заодно чинит частую причину расхождения «в редакторе имена, в программе подписи» — язык расширения, заведённый без кода языка.
Создаёт обработчик команды кнопки с правильной директивой. Поддерживает обычные формы и заимствованные (обработчики Перед, После, Вместо).
Назначает обработчик события на форму или элемент формы — ПриОткрытии, ПриСозданииНаСервере, ПриИзменении, ОбработкаВыбора и десятки других. Имя процедуры-обработчика подставляется автоматически по правилам платформы (например, ИмяПоляПриИзменении) либо задаётся явно. Если процедуры-обработчика ещё нет в модуле формы — в неё автоматически дописывается заглушка с правильной сигнатурой по описанию события и нужной директивой компиляции (&НаКлиенте, &НаСервере). Агент после назначения сразу получает рабочий каркас, в который остаётся вписать тело.
Добавляет ссылку на существующую команду в командный интерфейс формы — в навигационную панель (горизонтальная линейка ссылок под заголовком формы, выше штатной командной панели) или в панель команд формы (кнопки команд рядом с автокомандной панелью). Принимает FQN команды любого вида: объектная (Catalog.X.Command.Y / Document.X.Command.Y), общая (CommonCommand.Y), стандартная команда формы (Form.StandardCommand.Refresh). Параметр group задаёт группу размещения внутри панели; visible и index — видимость и порядок. Категория группы должна совпадать с типом панели (для navigation — FormNavigationPanel*, для commandBar — FormCommandBar*); иначе плагин сразу вернёт понятную ошибку, не оставляя форму в битом состоянии. Сама команда должна существовать в проекте до этого вызова — создаётся через createObjectCommand или createObject CommonCommand.
Обратная операция: убирает ссылку на команду из командного интерфейса формы. Сама команда (объектная или общая) при этом не удаляется — стирается только её пункт в выбранной панели.
Меняет одно из свойств существующего пункта-ссылки в панели формы: group (группа размещения), visible (видимость) или index (позиция в группе). Категория новой группы должна соответствовать типу панели (как и в addFormCommandInterfaceItem); иначе плагин откажет до записи.
Добавляет на любую форму (обработки, отчёта, общей формы, формы документа) реквизит-композитор настроек компоновки данных с UI-таблицами — как галочка «Настройки на форме» в мастере EDT, но доступно не только отчётам. Ставит сразу: реквизит типа КомпоновщикНастроек, таблицу «Структура» (дерево группировок), группу пользовательских настроек и привязку ExtInfo формы. Опциональный параметр standardItems регулирует, какие UI-таблицы вывести: только структура (по умолчанию), алиас full — полный набор (группировки + отборы + сортировка + условное оформление), либо произвольный список. Ответ операции содержит готовый BSL-пример для обработчика ПриСозданииНаСервере — с корректной передачей схемы через временное хранилище и правильным вызовом ПолучитьМакет в зависимости от того, где лежит макет (обработка / справочник / отчёт / общий). Полный сценарий сборки от объекта до BSL-кода формирования результата — в справочнике через help topic=composerWorkflow.
Макеты печатных форм (10 операций)
Полная поддержка создания макетов — от пустого объекта до готовой печатной формы, без переключения в EDT. Макеты можно создавать у справочников, документов, обработок, отчётов, а также как общие макеты конфигурации.
Создание макета. Поддерживаемые типы: табличный документ (по умолчанию), текстовый документ, схема компоновки данных, макет оформления компоновки, двоичные данные, активный документ, HTML-документ, географическая схема, графическая схема, внешняя компонента. Принимает русские имена типов (Табличный, Текстовый, СКД, Двоичные данные, …) и английские. Сразу наполняет содержимым: текстовому макету можно передать текст, HTML-макету — HTML-разметку, а внешней компоненте, двоичному макету и графической/географической схеме — путь к файлу-источнику на диске. Без содержимого макет создаётся пустым, конфигурация остаётся рабочей.
Чтение и замена содержимого уже созданного макета. Закрывает сценарий «поправить кусок текста в макете»: агент читает текущее содержимое (getTemplateContent), меняет нужное и записывает обратно (setTemplateContent). Работает для текстового и HTML-макета (по тексту/разметке) и для бинарных макетов и графической схемы (заменой файла-источника). Для табличного макета getTemplateContent возвращает полную карту: все ячейки с текстами и параметрами, объединения, именованные области, ширины колонок и высоты строк. Вместе с ячейкой приходит и её оформление — шрифт, цвета текста и фона, выравнивание, границы, размещение текста, формат данных, отступ, поворот, узор, защита и заполнение, — так что собственную правку можно сверить чтением, а не глазами в EDT. Цвета возвращаются в привычной записи цвета, а не служебными номерами; оформленные ячейки без текста показываются наравне с остальными. Высоты строк приходят с расшифровкой словами — жёсткая высота или автоподбор и до какого предела; ширины колонок — вместе с признаком автоподбора и весовым коэффициентом. У именованной области указан её вид — строки, колонки или прямоугольник. Операции правки (setTemplateCell/drawTemplate) сообщают, что именно они задели из существующего — прежний текст ячейки, пересечения с уже существующими объединениями. Вместе с режимом dryRun это даёт безопасную точечную правку: посмотрел карту → прогнал изменение вхолостую → применил. Схема компоновки данных правится своими СКД-командами.
Макет адресуется одним полным именем — CommonTemplate.Компонента для общего макета, Document.Заказ.Template.Печатная для макета объекта; прежний способ «владелец плюс имя макета» тоже работает. У текстового и HTML-макета есть режим дописывания (append): текст добавляется в конец, не нужно вычитывать содержимое и склеивать его вручную.
Ставит текст в одну ячейку табличного макета — как ввод текста в ячейку в редакторе макета EDT. Параметры: row, column и text (без текста ячейка очищается). Для оформления ячейки и пометки её параметром печати служит drawTemplate.
Объединение диапазона ячеек табличного макета (от столбца A строки N до столбца B строки M).
Пакетное заполнение макета одним вызовом: ячейки (cells), объединения (merges), ширины колонок (columnWidths), высоты строк (rowHeights) и именованные области (areas: Шапка, СтрокаТовара, Подвал — на эти имена ссылается код печати через Макет.ПолучитьОбласть("Шапка")). За один вызов можно собрать целый бланк.
Оформление ячейки. У каждой ячейки задаются текст (text), пометка параметром печати (parameter), цвет текста и фона (textColor, backColor), шрифт (font — жирный, курсив, подчёркнутый, зачёркнутый, размер, гарнитура), выравнивание (horizontalAlign, verticalAlign), границы и их стиль (border), размещение текста (textPlacement), формат данных (dataFormat), отступ (indent), поворот текста (textOrientation — градусы, для вертикальных заголовков узких колонок), узор заливки и его цвет (pattern, patternColor), выделение отрицательных значений (markNegatives) и защита ячейки от редактирования в пользовательском режиме (protection). Формат задаётся привычной строкой формата платформы — ЧЦ=15; ЧДЦ=2, ДФ=dd.MM.yyyy, — поэтому сумму и дату не нужно форматировать кодом при заполнении.
Перенос текста по словам. textPlacement принимает значения Wrap (переносить по словам), Cut (обрезать), Block (забивать) и Auto (выходить на свободные соседние ячейки) — русские написания тоже принимаются. Есть тонкость самой платформы: перенос она применяет к ячейкам, заполняемым текстом, а у ячейки-параметра — из них и состоит печатная форма — переносит только при выравнивании по ширине. Ответ прямо перечисляет ячейки, у которых перенос не сработает, и называет два рабочих способа его получить.
Высота строки: три способа задания. В rowHeights у строки задают autoHeight — подбор высоты по содержимому без ограничения; autoHeight вместе с height — подбор, но не выше заданного предела; один height — жёстко заданная высота. Важно обратное: жёсткая высота автоподбор выключает, поэтому если нужно, чтобы текст помещался сам, высоту числом задавать не надо — иначе перенос по словам ничего не даст, текст перенесётся, а строка останется прежней. Ответ сообщает, у каких строк включён автоподбор, и напоминает, что расти строка будет только при включённом переносе, выравнивании по ширине, повёрнутом тексте или готовых переводах строк в самом тексте.
Ширина колонки. Кроме точного числа (width) колонке включается автоподбор ширины по содержимому (autoWidth) и задаётся весовой коэффициент (widthWeightFactor) — доля, в которой между колонками делится свободное место. Эти два свойства платформа сохраняет начиная с режима совместимости 8.3.10.
Неверное значение не проглатывается молча. Весь состав правки разбирается до того, как в макет внесено хоть одно изменение. Незнакомое имя свойства, нераспознанное значение, неверный диапазон объединения, невозможное сочетание высоты — вызов отклоняется целиком, макет остаётся нетронутым, а в ответе перечислены все найденные проблемы разом и допустимые значения по каждой. Если вызов ответил успехом, значит применилось всё, что было передано.
Задаёт именованную область макета для отдельного вызова Макет.ПолучитьОбласть("ИмяОбласти") в коде печатной формы. Вид области определяется тем, что передали: rowFrom и rowTo — диапазон строк, columnFrom и columnTo — диапазон колонок, row и column (с rows и cols) — прямоугольник ячеек. Полезно, когда макет уже собран в EDT вручную или другим инструментом, а нужно лишь добавить новую именованную область без полной перерисовки через drawTemplate.
Какой вид области выбирать. Все три вида платформа разрешает и поддерживает. Для секций печатной формы берут строчные области: вывод области кладёт её со следующей строки и всегда от первой колонки, а у прямоугольной области при выводе теряется горизонтальное смещение. Прямоугольные удобны для присоединения и для блоков внутри строки. Настоящее ограничение по виду области ровно одно: повторяемые при печати строки принимают только строчную область, а повторяемые колонки — только колоночную.
Типичный сценарий печатной формы: один createObject + один addTemplate + один drawTemplate со всеми ячейками, объединениями и областями — готовый макет, идентичный нарисованному вручную в EDT. Код вывода печатной формы пишется обычным write_module_source.
Макет внешней обработки и внешнего отчёта. Печатная форма внешней обработки собирается ровно теми же средствами, вплоть до готового файла .epf через export_object. Одно отличие стоит знать заранее: стандартных команд платформа внешней обработке не заводит, поэтому кнопка печати делается собственной командой со своим обработчиком. Порядок сборки целиком — во встроенной справке через help topic=externalObjectsWorkflow.
Командный интерфейс (9 операций)
Управление командным интерфейсом конфигурации — тем, что пользователь видит в 1С:Предприятии как разделы и их меню: панель разделов, команды основного раздела и панели каждой подсистемы. Работает и в расширениях: у заимствованной подсистемы признак изменения свойства ставится автоматически.
Читает состав командного интерфейса. Без имени подсистемы — панель разделов и команды основного раздела; с именем (subsystem, вложенные — через точку: Продажи.Дочерняя) — панель навигации и панель действий этого раздела, как команда «Командный интерфейс» на подсистеме в дереве конфигурации EDT. Возвращает ссылки команд, которые принимают остальные операции этого раздела.
Порядок разделов в панели разделов (передаётся полный список сверху вниз; пустой — сброс к порядку по умолчанию) и видимость раздела — для всех пользователей или по ролям (roles).
Команды основного раздела (того, что открывается кнопкой «Главное»): добавить команду, убрать, управлять её видимостью — в том числе по ролям.
Видимость команды в панелях конкретной подсистемы — для всех или по ролям. Типовой кейс: пункт дублируется в панели навигации раздела, потому что у справочника две команды с одинаковым заголовком (стандартная команда открытия списка и собственная) — лишняя скрывается одним вызовом.
Перестановки — как перетаскивание в редакторе командного интерфейса: перенос команды в другую группу панели («Важное», «Обычное», «См. также», «Создать», «Отчёты», «Сервис» или своя группа) и полный порядок команд внутри группы. Обе операции работают и для основного раздела, и для любой подсистемы; вызов без параметров настройки — сброс к умолчанию.
Расширения (8 операций)
Полная поддержка работы с расширениями конфигурации:
Создаёт сам проект расширения — так же, как мастер EDT: имя, префикс имён, назначение (адаптация / дополнение / исправление), синоним и привязка к базовой конфигурации. Единственная конфигурация рабочей области выбирается базой автоматически. Сразу после создания в расширении работают заимствование объектов и создание собственных — AI проходит путь «создал расширение → заимствовал → доработал» без участия человека.
Заимствовать один объект из базовой конфигурации. По умолчанию — только сам объект. С параметром recursive=true — объект вместе со всеми дочерними элементами (реквизиты, табличные части, формы, команды).
Заимствовать несколько объектов базы одним вызовом по явному списку — например, пять справочников и два документа. Альтернатива многократному вызову adoptObject и альтернатива recursive=true, когда хочется именно эти объекты без их форм и реквизитов. В ответе — результат по каждому объекту отдельно (заимствован, уже был, не удалось). Ошибка на одном объекте не прерывает обработку остальных.
Заимствовать конкретный дочерний элемент: реквизит, табличную часть, форму, команду, измерение, ресурс. Форма заимствуется сразу в рабочем для базы виде — вместе со всем необходимым; состав добавленного перечислен в ответе, ничего не появляется молча.
Заимствовать элемент внутри заимствованной формы (главный реквизит, команду, параметр); пустое имя элемента означает главный реквизит формы. Вместе с главным реквизитом в расширение приходит всё, на что ссылается форма, — реквизиты шапки, табличные части с колонками и объекты верхнего уровня их типов. Что именно вернулось в состав, операция перечисляет поимённо, а формулировка «дополнительных объектов не потребовалось» появляется только тогда, когда состав действительно не менялся.
Обновить заимствованный объект или форму из основной конфигурации — когда база изменилась после заимствования и копия в расширении устарела (у формы это видно по признаку baseFormStale в просмотре формы). Изменения базы добавляются слиянием, доработки расширения — модуль, обработчики, свои элементы — сохраняются. Долгое обновление не обрывается: если ответ сообщает, что работа продолжается, повторный такой же вызов забирает готовый результат.
Снять заимствование одного дочернего элемента — например, убрать из расширения устаревшее значение перечисления, не трогая остальное. Снятие заимствования целого объекта — обычный removeObject: из расширения уходит только копия, сам объект в основной конфигурации не меняется.
Включает участие модуля заимствованного объекта в расширении — ту самую галочку «Объектный модуль» / «Модуль менеджера» / «Модуль набора записей» / «Модуль команды» / «Модуль значения» на вкладке «Расширение» в редакторе объекта в EDT. Без этой галочки файл модуля на диске есть, но платформа при исполнении в 1С:Предприятии его игнорирует. Параметр moduleType задаёт, какой именно модуль включаем. Операция идемпотентна. Отдельно вызывать нужно редко: обычно при записи кода через write_module_source активация происходит автоматически.
При добавлении реквизитов со ссылочными типами инструмент автоматически заимствует связанные объекты. При записи кода в модуль заимствованного объекта через write_module_source — автоматически включается нужная галочка участия модуля в расширении.
Состав расширения меняется только по делу. Правка формы дозаимствует главный реквизит не всегда, а лишь тогда, когда без него платформа расширение не примет. Состав не трогают: группа, страница и надпись; поле, связанное с реквизитом основной конфигурации; обработчик события и обработчик команды; кнопка с собственной командой формы; таблица динамического списка. Поэтому вручную сокращённый состав держится и после таких правок. Меняют состав: поле на собственном реквизите расширения, кнопка стандартной команды платформы и исключение команд командной панели — стандартные команды платформа строит от главного реквизита формы. Любое изменение состава названо в ответе операции поимённо, так что видно, когда состав пора проверить заново. Подробный разбор — в разделе «Заимствование и состав расширения» руководства.
Собираемость расширения не ломается молча. Кнопка стандартной команды объекта («Провести», «Записать», «Пометить на удаление») сама доводит заимствованную форму до состояния, которое платформа принимает при сборке файла поставки. Назначение основной таблицы уже существующему динамическому списку расширения заимствует эту таблицу вместе с назначением — так же, как это происходит при создании самого реквизита-списка; что затянуто в расширение, названо в ответе.
Расширения в информационной базе (.cfe) (5 операций)
Подключение готовых расширений (.cfe) — движок тестов YAxUnit, оснастки, инструменты — прямо в информационную базу проекта, без импорта исходников в рабочую область. Раньше это делалось руками через «Управление расширениями конфигурации»; теперь — одним вызовом.
Подключает готовое расширение к информационной базе проекта. Источник — локальный файл .cfe, прямая ссылка или GitHub-репозиторий (берётся последний релиз). Повторный вызов безопасен: существующее расширение с этим именем штатно обновляется на месте. Подключается сразу с выключенным «Безопасным режимом» — расширение ставят, чтобы оно работало. Расширение живёт в базе — в проекты рабочей области ничего не добавляется, исходники не появляются. Отключать базу или закрывать EDT не нужно. Имя расширения указывать необязательно — если его не передали, берётся имя файла .cfe.
Показывает все расширения информационной базы — и установленные этой операцией, и опубликованные из проектов рабочей области. По каждому видны галочки «Безопасный режим» и «Защита от опасных действий», а также предупреждение о тех, у которых снята галочка «Используется».
Ставит и снимает галочку «Используется» у расширения информационной базы — то же, что кнопка в списке «Управление расширениями конфигурации». Выключенное расширение остаётся в базе, но платформа его не применяет: удобно, чтобы временно отключить доработку и проверить, как система ведёт себя без неё.
Ставит и снимает галочки «Безопасный режим» и «Защита от опасных действий» у расширения базы — прямо из EDT, без запуска 1С:Предприятия. Включённый безопасный режим — коварная ловушка: перехваты «Вместо», «Перед» и «После» молча не работают — ошибок нет, а выполняется код основной конфигурации, как будто расширения и не было. Страховка: если после обновления базы какое-то расширение осталось в безопасном режиме, sync_database сам предупредит об этом и подскажет, как снять галочки.
Удаляет расширение из информационной базы по имени. Удаление расширения, у которого есть собственные данные, требует монопольного доступа к базе — и разрешить его ответом на вопрос платформы нельзя, потому что здесь платформа диалога не ведёт. Отказ в этом случае называет держателей базы и предлагает рабочие выходы, включая временное выключение расширения через setExtensionActive: выключенное платформа не загружает, и монопольный доступ для этого не нужен.
Долгая операция доводится до конца. Установка расширения — это загрузка файла поставки и обновление конфигурации базы данных: платформа берёт базу монопольно, и на клиент-серверной базе работа занимает минуты. В окно одного вызова столько не помещается, поэтому операция не обрывается вместе с ним: не успела — приходит ответ «выполняется» с временем работы, а повторный вызов с теми же параметрами не начинает всё заново, а дожидается и возвращает настоящий итог. Сколько ждать в одном вызове — задаётся параметром timeoutSeconds. По одной базе идёт не больше одной такой операции: обращение с другими параметрами получает отказ с именем работающей операции, а не второй конфигуратор поверх первого.
База, опубликованная на веб-сервере. Установка проходит и в неё. Опубликованную базу почти всегда держат сеансы веб-сервиса, и живут они там постоянно, поэтому ждать свободного окна бесполезно. Если монопольный доступ всё-таки не дают, отказ называет занявшие базу сеансы поимённо — с пользователем, приложением и видом держателя — и отдельно предупреждает, когда базу держит не человек, а программа: закрывать клиенты 1С в этом случае бесполезно, их нет. Тут же приведены варианты ответа, которые предлагает сама платформа, и два способа разрешить плагину ответить за вас — terminateActiveSessions и answerPlatformQuestion, с прямым предупреждением, что завершение чужих сеансов необратимо. По умолчанию плагин чужие сеансы не трогает. Если установка не дошла до конца, ответ говорит, что именно осталось в базе и как довести дело до конца повтором того же вызова, без ручной уборки.
Отчёты СКД (48 операций)
Полный цикл работы с отчётами на схеме компоновки данных: всё, что отчёт умеет в платформе, собирается через MCP без открытия редактора СКД вручную. Схему можно не только собрать с нуля, но и править точечно — у каждого элемента схемы есть набор «создать / изменить / удалить». Все операции работают не только для отчётов: схема компоновки и её наполнение (наборы данных, параметры, группировки, отборы, сортировки и т.д.) доступны также в макетах обработок, справочников, документов, планов счетов, бизнес-процессов, задач и планов обмена — везде, где в 1С бывают макеты типа «Схема компоновки данных». Для не-отчётов указывается имя макета через параметр templateName. Внешние отчёты .erf поддержаны наравне с обычными. После каждой операции предпросмотр в открытом редакторе СКД обновляется сразу — перезапускать EDT не нужно.
Схема и наборы данных
createReportSchema — создание схемы с готовым скелетом (источник данных, вариант настроек, автополе).
addDataSet / setDataSetProperty / removeDataSet — добавить, изменить (имя, источник, текст запроса) или удалить набор данных. При удалении набора связанные с ним связи убираются автоматически, при переименовании — переключаются на новое имя.
addDataSetField / removeDataSetField — поля набора данных. Для набора «из кода» (внешнего) добавление поля сразу дописывает соответствующую колонку в процедуру отчёта — поле не «теряется».
Автозаполнение полей (autoFillAvailableFields). У набора с включённым автозаполнением описаний полей в схеме нет вовсе — состав платформа берёт из текста запроса при формировании отчёта, ровно как в типовых отчётах. Поэтому «полей 0» здесь норма, и ответ прямо это называет, а не оставляет гадать. Выключают автозаполнение, чтобы в отчёт не попали служебные колонки запроса: тогда доступны ровно объявленные поля. Выключить его можно и у готового набора, не пересоздавая. Поле, которого запрос не возвращает, объявить нельзя — вместо успеха приходит отказ с перечнем полей запроса и двумя выходами: добавить поле в запрос или назвать его настоящим псевдонимом.
Смена запроса не переигрывает состав полей. Правка текста запроса меняет только запрос: признак автозаполнения не трогается, объявленные поля остаются на месте, служебные колонки в отчёт не возвращаются. Пересобрать поля из нового запроса можно, включив автозаполнение явно. Пакетный запрос (несколько запросов через «;» с временными таблицами) сверяется с последним запросом пакета — тем, результат которого набор и отдаёт наружу; то же касается колонок динамического списка на пакетном запросе.
Состав схемы под страховкой. На каждой правке считается состав схемы — наборы данных, параметры, итоговые и вычисляемые поля, связи, варианты настроек. Если операция, которая ничего не должна удалять, уменьшила любое из этих чисел или задела соседний набор, правка отменяется целиком и ответ перечисляет, что именно ушло; схема остаётся такой, какой была. Уменьшать состав по-прежнему можно адресными операциями удаления. Ответ на правку возвращает фактическое состояние после записи — состав схемы числами, а для правленого набора настоящую длину текста запроса и количество описаний полей; те же числа приходят и по каждой группе операций в пакетном вызове. Перед крупной правкой — заменой текста запроса набора, добавлением или удалением набора, восстановлением схемы, удалением варианта — плагин делает снимок проекта, и в ответе приходит короткая команда возврата к состоянию до правки.
Значения в настройках отчёта
Значение отбора, условия условного оформления и параметра настроек записывается тем типом, которым его хранят типовые конфигурации, — иначе отчёт молча отдаёт ноль строк при совершенно правильной на вид схеме.
Ссылочные значения. Пишутся привычным адресом — Перечисление.СтатусыЗаказов.Закрыт, для пустой ссылки Справочник.Валюты.ПустаяСсылка; английские написания вида объекта тоже принимаются. Имя значения проверяется: опечатка не уходит в схему молча, а встречает отказ с перечнем допустимого. У справочника и планов значением может быть предопределённый элемент либо пустая ссылка, у документа, задачи, бизнес-процесса и плана обмена — только пустая ссылка. Конкретный элемент базы по идентификатору отклоняется с объяснением: схема живёт в конфигурации, а элементы у каждой базы свои, и такой отчёт работал бы ровно в одной базе — если элемент выбирает пользователь, отбор выводится в шапку отчёта.
Даты. Значение-дата сохраняется датой во всех трёх местах — в отборе, в условии оформления и в значении параметра. Принимаются записи ГГГГ-ММ-ДД, ГГГГ-ММ-ДД ЧЧ:ММ:СС, ДД.ММ.ГГГГ и та, в которой дату отдаёт чтение, — поэтому прочитанное значение записывается обратно без ручного перевода. Если тип параметра объявлен датой, а переданное значение на дату не похоже, операция отказывает и объясняет формат. Число, булево и строка записываются обычным значением.
Вид значения виден при чтении. Рядом со значением приходит его вид — дата, число, булево, строка, ссылка, список значений, стандартный период. Дата, записанная строкой, и настоящая дата выглядят в тексте одинаково, поэтому без этого ошибку типа нельзя было заметить иначе как запуском отчёта.
Подробности — во встроенной справке через help topic=dcsReferenceValues.
Правка запроса набора
addQueryField / removeQueryField — добавить или убрать одно поле в выборке запроса, не переписывая весь текст запроса. Остальные части (отборы, упорядочивание, группировки) остаются нетронутыми.
addQueryCondition — добавить одно условие в отбор запроса.
Связи наборов данных
addDataSetLink / setDataSetLinkProperty / removeDataSetLink — связать два набора данных по полю (типичный случай: продажи в одном наборе, реквизиты организаций в другом, связь по «Организация»), изменить или удалить связь. Раньше связь можно было только создать — теперь полный цикл.
Параметры схемы
addSchemaParameter — добавить параметр (тип, длина, выражение по умолчанию, признак списка значений).
setSchemaParameter — изменить уже созданный параметр (тип, длина, выражение, флаги). Меняются только переданные поля.
removeSchemaParameter — удалить параметр.
moveSchemaParameter — поменять параметры местами (направление Up/Down или явная позиция).
Вычисления и итоги
addCalculatedField / setCalculatedField / removeCalculatedField — вычисляемое поле (выражение над другими полями): добавить, изменить выражение, удалить.
addTotalField / setTotalField / removeTotalField — итог-ресурс с агрегацией (Сумма, Количество, Максимум и др.): добавить, изменить выражение или группировки, удалить.
addUserField — пользовательское поле-выражение.
Структура настроек
addSettingsGroup — группировка (обычная, детальные записи, вложенная, внутри таблицы/диаграммы).
addSettingsTable — кросс-таблица с группировками по строкам и колонкам. В ячейки на пересечении попадают ресурсы отчёта, и попадают они туда только как явно выбранные поля — поэтому операция сама включает ресурсы в выбранные поля и перечисляет их в ответе; ресурс, добавленный уже после таблицы, попадает туда же. Если ресурсов в отчёте нет, операция предупредит, что выводить в ячейки нечего.
addSettingsChart — диаграмма с точками и сериями.
addSettingsSelectedField / removeSettingsSelectedField / clearSettingsSelectedFields — управление выводимыми полями, в т.ч. очистка всего списка одной командой.
removeSettingsItem — удаление группировки, таблицы или диаграммы.
Отборы, сортировка, оформление
addSettingsFilter / removeSettingsFilter — элемент отбора (20+ типов сравнения): добавить или удалить. Отбор, добавленный без значения справа, создаётся выключенным, и ответ это называет: включённый отбор сравнивал бы поле с пустым значением и обнулял отчёт на любом периоде, тогда как замысел обычно обратный — отбор стоит в шапке и по умолчанию ничего не сужает. Отборы «заполнено» и «не заполнено» правило не затрагивает: им значение не нужно.
addSettingsFilterGroup — группа отборов (И/ИЛИ/НЕ).
addSettingsOrder / removeSettingsOrder — сортировка: добавить или удалить.
addConditionalAppearance / setConditionalAppearance / removeConditionalAppearance — условное оформление с полным набором параметров (формат, цвета, шрифт, отступы и др.): добавить, изменить, удалить. У готового правила правятся все три части — поля применения, условие и само оформление; правило адресуется не только номером, но и подписью. В ответе приходят числа — сколько параметров оформления и сколько условий получилось, — так что опустевшее правило видно сразу.
setDataSetFieldAppearance — постоянное оформление поля набора: формат суммы, формат даты, цвет. При включённом автозаполнении описаний полей в схеме нет, а оформление ставится именно на описание, поэтому операция заводит его сама — ровно как мастер схемы в среде разработки, — и сообщает об этом в ответе; автозаполнение при этом остаётся включённым. Если автозаполнение выключено, состав полей задают только описания, и неизвестное поле по-прежнему даёт отказ.
Варианты отчёта
addSettingsVariant — новый вариант отчёта.
cloneSettingsVariant — скопировать вариант целиком (со всеми группировками, отборами и оформлением) под новым именем.
setSettingsVariantProperty — переименовать вариант или сменить его заголовок.
removeSettingsVariant — удалить вариант (последний удалить нельзя).
Любую настройку (группировку, отбор, сортировку, оформление) можно адресовать конкретному варианту — многовариантные отчёты собираются полностью через MCP.
Значения параметров, вывод, быстрые настройки
setSettingsParameter / removeSettingsParameter — задать или снять значение параметра в настройках отчёта.
setOutputParameter — параметры вывода (заголовок отчёта, макет оформления, тип диаграммы и др.). Русские и английские названия.
setSettingsItemUserMode — вынести любую настройку (отбор, сортировку, оформление, группировку, поле, параметр) в шапку отчёта быстрыми настройками или, наоборот, спрятать. Признак «Использование» задаётся отдельным параметром use — это другое свойство, чем видимость (viewMode): использование решает, работает ли элемент вообще, а видимость — увидит ли его пользователь в форме отчёта.
Удаление без обломков
Настройки вариантов отчёта ссылаются на поля и параметры схемы. Запись, оставшаяся без своего поля, схему на вид не портит, но отчёт в 1С:Предприятии после этого не собирается вовсе — компоновка падает с сообщением, что поля нет.
Поэтому вместе с полем убираются и все записи, которые на него ссылались, — в группировке, в выбранных полях, в отборе, в сортировке, в условном оформлении, во всех вариантах отчёта; ответ перечисляет убранное поимённо. Правило условного оформления, у которого не осталось ни одного поля, снимается целиком, соседние настройки не затрагиваются. Так же ведут себя удаление поля набора, вычисляемого поля и ресурса, исчезновение поля при смене запроса и удаление параметра схемы — в последнем случае ответ сообщает, сколько записей убрано из вариантов.
Чтение схемы: видно то, что задано
Разбор схемы показывает не только структуру, но и настройки, по которым обычно и проверяют собственную правку: пользовательский заголовок поля набора приходит вместе с полем, у правила условного оформления видна подпись, а цвет и шрифт приходят значениями — цвет составляющими, шрифт именем и начертанием, а не одним именем параметра. Признак автозаполнения полей набора виден при чтении, так что состав колонок отчёта проверяется без его запуска.
В разборе варианта отчёта вид группировки приписан к имени поля, когда он отличается от обычного (например, «по иерархии»), а значение периода приходит значением — «прошлый год» так и написано. Обычная группировка печатается одним именем: умолчание ответ не засоряет. Запрошенный набор данных помечен отдельным признаком, остальные наборы схемы остаются свёрнутыми.
Восстановление
repairReportSchema — перечитать схему компоновки данных с диска и обновить её содержимое в проекте. Нужно, если в редакторе СКД превью пустое или deploy в инфобазу выдаёт «Неизвестный объект метаданных», хотя файл .dcs существует и непустой. Идемпотентна.
Пример создания минимального отчёта — 6 вызовов: создание объекта, схемы, набора данных с запросом, ресурса, группировки и заголовка. Сложный отчёт из десятков операций можно отправить одним пакетным вызовом — плагин выполнит их по очереди и вернёт общий итог, а повторный вызов с тем же именем элемента не создаёт дубль.
Общее (2 операции)
Перемещение элемента в другой контейнер на конкретную позицию.
Удаление элемента по имени.
Сервис (2 операции)
importProject — создаёт новый проект прямо из файла: .cf (конфигурация), .cfe (расширение), .epf / .erf (внешняя обработка и отчёт). Прислали файл от заказчика — одним вызовом получается готовый проект в рабочей области, с которым дальше работают все остальные инструменты. Для расширения указывается проект базовой конфигурации, к которому его привязать. На большой конфигурации загрузка идёт в фоне и результат забирается повторным вызовом; есть предварительный просмотр без изменений в рабочей области. Вместе с переименованием (renameObject у корня) и установкой в базу (installExtension, setExtensionActive) закрывается частый сценарий «сделать копию расширения под новым именем и включить её в базе» — минуты вместо ручного обхода.
syncExport — дожидается, пока все ранее запланированные записи проекта на диск завершатся. У EDT есть внутренние очереди записи — edit_metadata вносит изменения в модель, а реальная запись в .mdo и .bsl файлы происходит асинхронно. Обычные сценарии этого не требуют — операции ждут синхронизации сами. syncExport нужен в редких случаях: после серии быстрых правок перед запуском сборки проекта, перед коммитом в git из внешнего инструмента, перед чтением только что записанного файла каким-то скриптом за пределами плагина. Возвращает количество дождавшихся записей и время ожидания.
Пакетные режимы
Большинство операций поддерживают создание нескольких элементов за один вызов — передавайте массив вместо одиночного элемента. Это позволяет, например, создать справочник с 10 реквизитами, табличной частью и формой за 3–4 вызова вместо 15.
createObject принимает сразу реквизиты (attributes) и табличные части с колонками (tabularSections) — полноценный справочник или документ создаётся одним вызовом.
adoptObjects — пакетное заимствование нескольких объектов из базы в расширение по явному списку (альтернатива рекурсивному режиму, когда не нужно тянуть формы и реквизиты).
Режим предпросмотра (dryRun)
К любой операции можно добавить параметр dryRun=true — плагин выполнит её внутри транзакции и откатит: в ответе виден полный результат (что было бы создано, какие реквизиты, поля, формы), а в проекте ничего не меняется. Полезно для перепроверки сложных пакетных вызовов и уточнения правильности типов (CatalogRef.X, ОпределяемыйТип.Y) — ошибка резолва типа в режиме предпросмотра не испортит проект.
Режим работает для всех операций конструктора метаданных (создание/модификация объектов, реквизитов, форм, элементов формы, макетов, отчётов СКД). Не поддерживается для adoptObject/adoptObjects/adoptChild и удаления реквизитов/табличных частей — эти операции по устройству платформы используют отдельные механизмы, которые нельзя откатить. При передаче dryRun в такую операцию плагин возвращает внятное пояснение вместо молчаливого применения.
Что пока не реализовано
- Декорация-картинка (пока только надписи).
yaxunit_tests — Юнит-тесты YAxUnit
Полный цикл AI-разработки 1С: ассистент сам пишет юнит-тесты, прогоняет их, разбирает упавшие через отладчик и правит код — без единого клика мышью со стороны пользователя. Между правкой кода и итоговым отчётом проходит только время выполнения 1С:Предприятия и самих тестов.
Один MCP-инструмент с режимами run и debug. Стартует 1С:Предприятие через штатную Run Configuration EDT, выполняет тесты YAxUnit и возвращает наглядный отчёт: сколько прошло, что упало и почему. В режиме отладки точки останова, поставленные через launch_debugger, срабатывают как обычно — ассистент сам смотрит переменные, вычисляет произвольные BSL-выражения, делает шаги по коду.
- Запуск — фильтры по расширениям, общим модулям, конкретным тестам, тестовым наборам, тегам и контекстам исполнения (Server/Client/ExternalConnection).
- Отладка — режим mode=debug, при срабатывании точки останова возвращается status=Pending; ассистент управляет сессией через launch_debugger (getState/getVariables/evaluate/resume), затем перезванивает yaxunit_tests за финальным отчётом.
- Автообновление информбазы — параметр updateBeforeLaunch=true (по умолчанию) синхронизирует базу с проектом перед запуском, чтобы 1С не показала модальное окно «Обновить конфигурацию?», блокирующее автономную работу.
- Pending-механизм — если прогон не уложился в окно ожидания, 1С не убивается, ассистент перезванивает с теми же параметрами и забирает результат когда тот появится.
- Файловые и клиент-серверные базы — прогоны (обычные и под отладкой) идут полностью автономно на обеих, в том числе на клиент-серверных базах с включённой на сервере отладкой — без модальных окон, требующих ручного клика.
- Автономный сервер — прогоны идут и на базе автономного сервера 1С: клиент подключается по HTTP, режим запуска плагин выставляет сам. Расширения проектов рабочей области попадают в такую базу обычным обновлением конфигурации, а чужое расширение из файла ставится штатной утилитой администрирования — если чего-то не хватает, в отказе приходят готовые команды с путями вашего сервера.
- Встроенная справка для AI — параметр help со значениями topics / writing / assertions / setup / events / advanced: ассистент по запросу подгружает короткий тематический туториал по YAxUnit и пишет тесты по правилам, даже если изначально не знаком с фреймворком.
- Reactive-подсказка при пустом результате — если прогон вернул 0 тестов (типичная ошибка: процедуры написаны, но не зарегистрированы в ИсполняемыеСценарии), Markdown-отчёт сразу выдаёт три самые частые причины и указатель на help=writing для шаблона теста.
- Требования — в EDT настроена Run Configuration для проекта; расширение YAxUnit (.cfe, Apache 2.0) подключено к информбазе. Подробное руководство пользователя — в разделе «Юнит-тесты YAxUnit» руководства.
vanessa — Сценарное UI-тестирование (Vanessa Automation)
Вторая половина полного цикла тестирования. Если yaxunit_tests проверяет код изнутри, то vanessa проверяет программу снаружи, глазами пользователя: открывает формы, нажимает кнопки, заполняет поля, сверяет результат — и говорит, какой шаг сценария упал и почему. Сценарий пишется обычным текстом на русском (Gherkin: «Дано… Когда… Тогда…»), AI составляет его сам, без программирования.
Инструмент обвязывает фреймворк Vanessa Automation: при первом запуске сам скачивает и ставит его, поднимает 1С в режиме тестирования, прогоняет .feature-сценарии и возвращает понятный Markdown-отчёт — сколько сценариев прошло, какой шаг сломался, текст ошибки 1С, скриншот падения (если включён). Долгий прогон не обрывается: инструмент возвращает «идёт в фоне» с идентификатором сессии, повторный вызов забирает готовый отчёт — ровно как у yaxunit_tests.
- run — прогон сценариев. Фильтр по тегам (tags / ignoreTags), путь к сценариям (featurePath, по умолчанию каталог features проекта). Перед прогоном база обновляется автоматически тем же механизмом, что у sync_database — без модального окна «Обновить конфигурацию?». Прогон полностью автономен и на файловых, и на клиент-серверных базах — включая базы с включённой на сервере отладкой.
- Скриншот при падении — снимок экрана в момент, когда шаг сценария упал: видно, что реально было на экране (не та форма, неожиданный диалог, окно ошибки платформы) — вместо догадок по тексту ошибки. По умолчанию выключено (обычный прогон не нагружается снимками); включается просьбой «прогони со скриншотами». В кадр попадает именно окно 1С, а не весь рабочий стол. Готовый снимок прикладывается к отчёту — агент его открывает и показывает либо описывает. Если сценарий упал без снимка, отчёт сам подсказывает, что падение можно переснять со скриншотом — и агент предложит это вам, прежде чем запускать повторный прогон (сам, без спроса, не перезапускает).
- screenshot — снимок формы в работающей программе, как её видит конечный пользователь. Одним вызовом: открыть форму нужного объекта (или что угодно по навигационной ссылке) в 1С:Предприятии и получить готовый PNG. Пока 1С поднимается, ответ честно говорит, что снимок ещё не готов, — результат забирается повторным вызовом. Дополняет get_form_image: там форма видна глазами разработчика (макет и редактор форм), здесь — глазами пользователя.
- Проект расширения и внешних обработок — прогон сценариев и снимок формы запускаются с указанием проекта расширения или внешних обработок: инструмент сам поднимается к конфигурации-владельцу и работает на её базе, а в ответе сказано, на чьей базе выполнен прогон.
- steps — словарь шагов Gherkin: поиск по словам и категориям, список самых используемых шагов по статистике реальных проектов. Каждый шаг возвращается готовой строкой для вставки в сценарий. Читается прямо из установленной Vanessa — без запуска 1С и без расхода лицензий. Шаг находится по смыслу, а не по точному совпадению: разные формы слов и синонимы («открыть форму», «нажать кнопку») ведут к нужному шагу, самые подходящие показаны первыми. Есть готовые шаги, открывающие форму обработки или список справочника напрямую по имени объекта, без пути через панель разделов.
- checkSyntax — проверка .feature до прогона: каждый шаг сверяется со словарём установленной Vanessa без запуска 1С, ответ мгновенный. Для неопознанных шагов называет файл, строку и предлагает похожие настоящие шаги.
- Просмотр вживую — keepOpen=true не закрывает 1С после прогона, stepDelaySeconds замедляет шаги, чтобы видеть, как открываются формы и нажимаются кнопки. Окна, оставленные «на посмотреть», следующий прогон закрывает сам.
- Честность по лицензии — каждый прогон держит два сеанса 1С (менеджер тестирования + клиент). При нехватке лицензий в ответе — дословное сообщение платформы и признак licenseLimit; зависший старт инструмент снимает сам и возвращает понятную ошибку вместо вечного ожидания.
- Связка с юнит-тестами — оба инструмента ходят в одну информационную базу и используют общий цикл обновления и фонового ожидания: один объект проверяется и кодом (yaxunit_tests), и интерфейсом (vanessa). Подробное руководство — в разделе «Сценарное тестирование Vanessa» руководства.
Профиль «Архитектор Про» — добавляет 3 инструмента
Старший профиль над «Архитектором». К 26 инструментам добавляются обновление и объединение конфигураций (update_configuration) и журнал версий проекта (git), а внутри уже знакомых инструментов открывается доработка старых конфигураций на обычных формах. Всего у профиля 28 инструментов. Это возможности, которых нет у других инструментов на рынке: обновление доработанных типовых, работа со старыми конфигурациями и полноценный контроль версий прямо в EDT.
update_configuration — обновление и объединение конфигураций
Обновляет конфигурацию на новый релиз поставщика по полному файлу .cf (даже с пропуском многих релизов), сравнивает и объединяет разъехавшиеся конфигурации и расширения, ведёт реестр доработок. Всё — штатным механизмом сравнения/объединения EDT, без единого диалогового окна. Требует 1С:EDT 2026.1+.
Заменяет ручную работу в конфигураторе («Обновление конфигурации» → окно сравнения с галочками → «Выполнить»): AI проходит те же вехи сам, от подготовки образа новой версии до объединения. Основные операции:
- updateVendor — весь путь «обнови на релиз» одним вызовом: подготовка образа из .cf → сравнение → (с acceptAll=true) объединение. Для типовой без доработок — принять всё одной командой.
- prepareSource / compare / differences — подготовить образ поставки, построить дерево различий, получить постраничный список: что «только у меня», что «только в новой версии», что изменено с обеих сторон.
- merge — объединить по правилам (взять из новой / оставить своё / слить с приоритетом одной из сторон), dryRun=true — проверка без изменений. Ничего не затирается молча.
- exportDifferences / replayCustomizations — реестр доработок: сохранить все свои отличия от поставки в каталог на диске, обновиться на чистую новую версию, затем вернуть доработки поверх. Незаменимо, когда доработок сотни и разбирать их поштучно нереально.
- status / cancel / cleanupSources — состояние фоновых шагов, отмена, уборка накопившихся образов поставки.
Контроль прыжка версий. Если обновление пересекает версию конфигурации (у ERP, КА, УТ 11 между LTS-версиями есть обязательные ступени), инструмент один раз останавливается и просит сверить порядок обновления поставщика — вместо того чтобы подсказывать заведомо неверный прыжок. Настройки поддержки объединение не портит: если возможность изменения была включена, после обновления она восстанавливается, а эталоном поставщика становится поставка, которой обновлялись.
Подробное руководство со сценариями — в разделе «Обновление и объединение конфигураций».
git — журнал версий проекта
Полноценный контроль версий прямо в EDT: снимки, история, сравнение по методам, откат, ветки, слияния, обмен с сервером. Движок git встроен в плагин — устанавливать git на компьютер не нужно, репозиторий обычный и совместим с любыми git-инструментами.
Агент фиксирует сделанную работу снимками, показывает, что изменилось, и откатывает неудачные правки — всё файлы проекта, без установки git. Операции:
- commit / status / log — зафиксировать все изменения снимком с сообщением (первый вызов создаёт репозиторий); показать, что изменено с последнего снимка; история снимков с пометками автоснимков и откатов.
- diff — сравнение файла: сводка по методам (что добавлено/изменено/удалено), построчный diff каждого метода или всего файла; понимает и обычные формы (изменения кода модуля + пометка, менялась ли раскладка).
- restore — вернуть проект или отдельные файлы к снимку: сначала предпросмотр, затем подтверждение. Перед откатом — защитный автоснимок, история не стирается, откат обратим.
- branch / switch / merge — крупная доработка в отдельной ветке и вливание в основную; конфликт слияния — автоотмена и выбор стороны (resolve=ours/theirs), файлы с маркерами конфликтов в проекте не остаются никогда.
- push / pull — обмен снимками с git-сервером (GitHub/GitLab/Gitea по токену) или обычной папкой, в том числе сетевой, если git-сервера у команды нет.
Автоснимки перед опасными операциями. Перед объединением конфигураций, обновлением на релиз поставщика и массовым заимствованием объектов плагин сам создаёт снимок с пометкой «автоснимок» (если журнал уже ведётся) — всегда есть точка возврата. Подробное руководство — в разделе «git — журнал версий проекта».
manage_infobase — привязка информационных баз
Связка «проект EDT ↔ информационная база» без мастеров и диалогов. Особенно важна для конфигураций на обычных формах: штатный мастер привязки EDT на них не работает.
Управляет связкой «проект EDT ↔ информационная база»: привязать базу к проекту (незарегистрированную базу плагин зарегистрирует сам), отвязать с предпросмотром и снятием регистрации, посмотреть текущие привязки. После привязки база появляется в панели приложений проекта — именно в неё идут обновление, запуск и отладка. Для конфигурации обычного приложения привязка сразу настраивает и правильный режим запуска клиента. Создание и удаление самих баз сознательно оставлено вне инструмента.
Уборка списка баз (operation=cleanup). Убирает из списка информационных баз накопившиеся служебные записи временных баз плагина. С dryRun=true сначала показывает полный перечень того, что будет убрано. Трогает только файловую базу внутри служебного каталога плагина, не привязанную ни к одному проекту; сами базы на диске не удаляются.
Доработка конфигураций на обычных формах
У старых конфигураций (УТ 10.3, УПП 1.3, «Бухгалтерия» 2.0 и т. п.) код живёт в модулях обычных форм. Чтение такого кода доступно во всех профилях; доработка открывается в «Архитектор Про» — она проходит внутри уже знакомых инструментов, отдельных инструментов для неё нет.
- write_module_source — запись модулей обычных форм. Правка кода обычной формы теми же безопасными режимами, что и у любого модуля; обработчики защищены от «тихой» поломки (удаление привязанной к событию процедуры блокируется).
- sync_database — обновление базы конвейером обычного приложения. Штатный механизм EDT для таких конфигураций не работает — плагин ведёт загрузку своим конвейером (первая полная, дальше частичные).
- edit_metadata pullFormFromInfobase — перенос формы из базы в проект. Раскладку правят в Конфигураторе, плагин подтягивает её в проект, сохраняя проектный модуль.
- edit_metadata enableModification — снятие «замка» поддержки. С обязательным подтверждением человека и укладкой эталона поставщика в проект.
Полное руководство по работе со старыми конфигурациями — в разделе «Обычные формы».