Как править обычные формы 1С через MCP-1C
form_edit для Form.bin: переименование, перемещение, копирование и удаление элементов, dry_run и резервная копия. Порядок проверки в Конфигураторе и тестовой базе.
Обычные формы продолжают использоваться в старых и отраслевых решениях 1С. Их описание хранится в бинарном Form.bin, поэтому обычная текстовая правка XML здесь не подходит. С v2.40.1 Расширенная и Профессиональная редакции MCP-1C умеют выполнять ограниченный набор изменений обычной формы через form_edit.
Инструмент работает прямо в каталоге выгрузки, подключённой через --dump, и требует действующей подписки уровня Расширенной. Управляемые формы в Form.xml он не изменяет. Это редактор исходного артефакта; загрузку и проверку в 1С выполняют отдельно. Контракт описан в справочнике form_edit, появление — в релизах.
В статье: подготовка, действия, пробный вызов, проверка правки.
Сначала найдите элемент и сохраните исходное состояние
Работайте с отдельной рабочей выгрузкой под контролем версий. Уточните технические имена объекта, формы и элемента через code_read с action: "form_structure". Для предварительного просмотра расположения можно использовать form_view.
Перед изменением элемента найдите обращения к нему в модуле формы и соседнем коде. Имя элемента и имя реквизита могут выглядеть одинаково, но обозначать разные сущности. Это особенно важно при переименовании и удалении.
Выберите действие по задаче
| Действие | Что делает и что учесть |
|---|---|
rename_element |
Меняет имя и ссылки ЭлементыФормы.Имя в модуле; голые упоминания не переписывает |
move_element |
Меняет рамку; у вложенного элемента координаты отсчитываются от контейнера |
delete_element |
Удаляет элемент с вложенными; обращения в BSL остаются |
duplicate_element |
Копирует существующий элемент на то же место; обработчики общие, копию нужно переместить |
add_element |
Берёт элемент нужного класса из другой формы той же выгрузки; переносятся надпись и имена обработчиков донора |
create_form |
Создаёт копию существующей формы; первую форму объекта так создать нельзя |
Не выбирайте копирование как способ получить полностью независимое поведение без проверки привязок и обработчиков. Копия элемента может редактировать те же данные, а имя обработчика из формы-донора ещё не означает, что нужная процедура есть в целевой форме.
Начните с dry_run
Пример аргументов form_edit для переименования условного элемента:
{
"action": "rename_element",
"object_type": "Документ",
"object_name": "РеализацияТоваровУслуг",
"form_name": "ФормаДокумента",
"element_name": "ПолеВвода1",
"new_name": "ПолеСуммы",
"dry_run": true
}
Подставьте имена из своей выгрузки. Пробный вызов позволяет посмотреть результат без записи. После проверки аргументов выполните нужное изменение без dry_run: true и сохраните ответ.
При записи исходный файл сохраняется рядом под именем со временем правки; ответ содержит backup_path. Запись выполняется через временный файл. Резервная копия помогает восстановить исходник, но не заменяет понятный diff и контроль версий всей доработки.
Проверьте исходник и работающую форму
Повторно запросите структуру и убедитесь, что элемент имеет нужное имя, положение или состав. Проверьте ссылки, которые инструмент намеренно не менял: после удаления BSL может продолжать обращаться к отсутствующему элементу. При добавлении из другой формы разберите обработчики и привязки.
Затем загрузите изменение в тестовую базу обычным способом. Пакетный /LoadConfigFromFiles сам по себе не подтверждает корректность содержимого формы: откройте её в Конфигураторе, затем в приложении. Проверьте ввод, события, сохранение и повторное открытие, а для копии — независимость или общность поведения согласно задаче.
Если результат не подходит, восстановите исходники из сохранённой версии по принятому процессу и повторите проверку. Не переносите непроверенный Form.bin в рабочую базу только потому, что операция записи завершилась успешно.
Чтение бинарного описания разобрано в статье об обычных формах. Здесь следующий шаг — управляемая правка с явной проверкой поведения.