# FormHelper и 1C Skills: программное изменение управляемых форм

> Два подхода к формам 1С: библиотека FormHelper для динамических изменений и 1C Skills для редактирования XML-исходников.

- Category: gitsell-news
- Published: 2026-10-19T04:08:31.244168
- Canonical: https://gitsell.ru/blog/formhelper-i-1c-skills-programmnoe-izmenenie-upravlyaemyh-fo

## Article

Форму 1С можно изменить на двух уровнях. [FormHelper](https://gitsell.ru/Nivanchenko/formhelper) строит элементы программно во время работы. [1C Skills](https://gitsell.ru/msrv-tech/skills) редактирует XML-исходники формы до сборки. Выбор зависит от того, должна структура быть динамической или фиксированной.

## Когда подходит FormHelper

Библиотека предоставляет fluent-построитель: из BSL добавляются реквизиты, поля, кнопки и команды, после чего изменения применяются к форме.

```bsl
РаботаСФормамиСервер.НовыйПостроительФорм(ЭтаФорма)
    .РеквизитСтрока("Комментарий", 150)
    .ПолеВвода("Комментарий")
        .Заголовок("Комментарий")
        .ПутьКДанным("Комментарий")
    .Применить();
```

Плюс — динамика. Минус — итоговую форму труднее увидеть в статическом diff, а ошибка проявляется при выполнении кода.

## Когда менять XML через Skills

Если поле или команда — постоянная часть поставки, используйте `form-info`, `form-edit` и `form-validate`. Агент изучает элементы и события, добавляет изменение и проверяет ссылки. Git показывает точный diff.

## Совместное использование

Можно хранить базовый каркас в XML, а динамические блоки создавать FormHelper. Важно договориться, какие элементы принадлежат каждому слою, чтобы агент не добавил статически то, что уже строится в рантайме.

> Проанализируй форму документа, перечисли элементы из XML и вызовы FormHelper. Новое поле должно быть постоянным — добавь его в XML, не дублируй в построителе.

Статическая валидация ловит структуру и ссылки. Затем откройте форму в тонком и веб-клиенте, проверьте порядок элементов, команды и повторное открытие. Динамический построитель должен быть идемпотентным: повторный вызов не создаёт вторую кнопку.


## Статьи по теме

- [1C Skills: веб-публикация базы и smoke-тест через Playwright](/blog/1c-skills-veb-publikatsiya-bazy-i-smoke-test-cherez-playwrig): Как опубликовать тестовую базу 1С через Apache и проверить веб-клиент с помощью web-publish, web-test и Playwright.
- [1C Skills и YAxUnit: как встроить тесты в работу ИИ-агента](/blog/1c-skills-i-yaxunit-kak-vstroit-testy-v-rabotu-ii-agenta): Связка 1C Skills и YAxUnit: агент меняет XML, запускает подходящие тесты, читает результат и исправляет код до review.
- [1C Skills: роли, права и безопасные изменения конфигурации](/blog/1c-skills-roli-prava-i-bezopasnye-izmeneniya-konfiguratsii): Как анализировать и создавать роли 1С с помощью role-info, role-compile и role-validate, не выдавая лишние права.