Инструменты · Код
code_write
Правит один модуль BSL — добавляет метод в нужную область, заменяет точный фрагмент текста, удаляет метод. После записи модуль проверяется на синтаксис; при ошибке запись откатывается, и сломанный код в проекте не остаётся.
Когда использовать
- Добавить новый метод или несколько методов сразу —
create_method; область создаётся сама, если её нет. - Изменить существующий код —
edit: замена точного фрагмента, как у обычного инструмента правки файлов; в том числе переписать метод целиком. - Удалить метод вместе с директивой и комментарием —
delete_method; опустевшая область удаляется. - Переименовать метод с обновлением вызовов в других модулях — не здесь, а
code_actionс операциейrename_method.
Соседние инструменты домена «Код»
Операции
| operation | Что делает | Нужно передать |
|---|---|---|
create_method | Добавляет метод в область area (по умолчанию СлужебныеПроцедурыИФункции). Отсутствующая стандартная область создаётся на своём месте по стандарту 1С, своя — ниже стандартных. Массив в content — пачка методов: одна проверка и одна запись, до 100 методов, всё или ничего. | project, module_fqn, content; по желанию area, position |
edit | Заменяет old_string на new_string. Фрагмент должен встречаться в модуле один раз, иначе — replace_all: true. Пустая new_string удаляет фрагмент. | project, module_fqn, old_string, new_string; по желанию replace_all |
delete_method | Удаляет метод вместе с директивой и комментариями над ним; опустевшая область удаляется. | project, module_fqn, method |
Параметры
| Параметр и тип | Обязательный | Описание | По умолчанию |
|---|---|---|---|
projectстрока | да | Идентификатор проекта рабочей области EDT — имя из ответа project_read (например, УТ2020). Для расширения — проект расширения. | — |
module_fqnстрока | да | Адрес модуля: CommonModule.X, Catalog.X.ObjectModule, Catalog.X.ManagerModule, InformationRegister.X.RecordSetModule, <Тип>.X.Form.Y (модуль формы). Русские префиксы и суффиксы тоже принимаются. | — |
operationстрока | да | Операция инструмента — значения и их смысл в таблице «Операции».значения: create_method · edit · delete_method | — |
methodстрока | для delete_method | Имя метода — для delete_method. | — |
contentстрока | массив | для create_method | Для create_method: полный текст метода — директива, объявление, тело, КонецПроцедуры или КонецФункции. Массив таких текстов — пачка: методы вставляются в порядке массива. | — |
areaстрока | нет | Для create_method: имя области #Область, куда добавить метод. Отсутствующая область создаётся. | СлужебныеПроцедурыИФункции |
positionстрока | нет | Для create_method: место метода в области — first, last, before:<метод>, after:<метод>. По умолчанию — в конец. | — |
old_stringстрока | для edit | Для edit: точный заменяемый текст с отступами. Должен быть единственным в модуле, если не задан replace_all. | — |
new_stringстрока | для edit | Для edit: новый текст. Пустая строка удаляет old_string. | — |
replace_allбулево | нет | Для edit: заменить все вхождения. | false |
skip_validationбулево | нет | true — не проверять синтаксис после записи. Позволяет записать неработающий код; включайте, только если уверены. | false |
dry_runбулево | нет | true — предпросмотр: текст временно записывается для проверки синтаксиса и гарантированно откатывается. Ответ содержит diff и результат проверки; файл не меняется. | false |
titleстрока | нет | Необязательная подпись вызова до 40 символов: клиент показывает её в шапке карточки вызова. На результат не влияет. | — |
Таблица собрана из схемы инструмента, которую получает агент при подключении.
Адреса
Адрес модуля задаётся параметром module_fqn. Поддерживаются общие модули, команды и формы, модули объектов и менеджеров, модули наборов записей регистров и модули форм.
| Адрес | Что адресует |
|---|---|
CommonModule.<Модуль> | общий модуль |
Catalog.Контрагенты.ObjectModule | модуль объекта |
Catalog.Контрагенты.ManagerModule | модуль менеджера |
InformationRegister.КурсыВалют.RecordSetModule | модуль набора записей |
Catalog.Контрагенты.Form.ФормаЭлемента | модуль формы |
Пример вызова и ответа
Ответ всегда содержит секцию Diff с изменением модуля и поле validation с результатом проверки синтаксиса.
{
"project": "УТ2020",
"module_fqn": "CommonModule.<Модуль>",
"operation": "create_method",
"area": "ПрограммныйИнтерфейс",
"content": "Функция ПолучитьДанные(Параметр) Экспорт\n\n\tРезультат = Новый Структура;\n\tРезультат.Вставить(\"Успех\", Ложь);\n\tВозврат Результат;\n\nКонецФункции"
}Пример ответа в подготовке Устройство ответа — на странице Формат ответов.
Отказы и ошибки
rolled_back · синтаксическая ошибка
После записи модуль не прошёл проверку синтаксиса — изменение откачено, в ответе ошибки с позициями. Исправьте текст и повторите.
Фрагмент для замены не найден или не единственный
old_string должен совпадать с текстом модуля посимвольно, с отступами-табуляциями. Если вхождений несколько — расширьте фрагмент или задайте replace_all: true.
QUANTA_AST_NOT_READY
Сразу после запуска EDT дерево кода ещё строится. Повторите через 5–30 секунд — Инструменты не отвечают первые секунды.
failed · Unknown operation
Неизвестное значение operation. В ответе — fix_hint: supported: … со списком допустимых операций и секция Did you mean. Допустимо: create_method, edit, delete_method.
failed · лицензия
Без действующего ключа инструмент отвечает карточкой failed с сообщением лицензия: … и подсказкой, где ввести ключ; в секции Context — список инструментов, доступных без ключа. Подробнее — Лицензия и бесплатный доступ.
Ограничения
- Пачка
create_method— до 100 методов за вызов, атомарно. - Области
#Областьне правятся напрямую: их создаётcreate_methodи убираетdelete_method. - Проверяется синтаксис; смысловые ошибки — неизвестные идентификаторы, вызовы несуществующих методов — проверяет
validateсfqnобъекта.