XBSL Skills AI-инструменты для 1С:Элемент
Скиллpython3

xbsl-form-add

Создание формы интерфейса (КомпонентИнтерфейса) для объектов 1С:Элемент. Используй этот скилл когда пользователь хочет создать форму объекта (ФормаОбъекта), форму списка (ФормаСписка), форму отчёта (ФормаОтчета), или обе формы для Справочника, Документа, РегистрСведений, Отчета или другого объекта конфигурации. Также применяй при запросах типа "создай интерфейс", "добавь форму", "сделай список", "нужна карточка редактирования", "форма для отчёта".

Создание формы интерфейса в 1С:Элемент

Шаг 0: Определи что нужно создать

Что создать Когда
ФормаОбъекта Форма редактирования одной записи
ФормаСписка Форма со списком записей
Обе формы Если нужен полный интерфейс (типичный случай)
ФормаОтчета Форма просмотра отчёта с параметрами (объект типа Отчет)

Уточни у пользователя имя объекта, если оно не указано.

Шаги 1 и 2: выполни параллельно

Шаг 1 — Загрузи спецификацию. Прочитай нужные файлы из references/:

  • При создании ФормаОбъекта → прочитай references/ФормаОбъекта.md
  • При создании ФормаСписка → прочитай references/ФормаСписка.md
  • При создании ФормаОтчета → прочитай references/ФормаОтчета.md
  • Читай references/elements.md только если нужны нестандартные элементы: вложенные файлы, изображения, сворачиваемые блоки, статусы с цветом, надписи/labels, кнопки действий, вкладки (Страницы) — иначе пропусти

Шаг 2 — Анализ объекта. Вызови скилл xbsl-form-info:

python3 .claude/skills/xbsl-form-info/scripts/form_info.py --name <ИмяОбъекта> --root .

Из результата возьми: - object_path — папка куда класть файлы форм (путь там, где живёт объект) - object_file — имя файла объекта (нужен для обновления в шаге 6) - object_type — тип объекта - namespace — пространство имён (vendor::project::subsystem), используется в типах ФормаСписка - fields — список реквизитов с именами и типами (используй их — не придумывай!) - tc — список табличных частей - suggested_layout — рекомендация: simple / panels / tabs / report (для объектов типа Отчет) - existing_forms — какие формы уже существуют (для Отчет содержит ключ ФормаОтчета) - is_hierarchicaltrue если справочник имеет Иерархический: Истина (паттерн А) - additional_hierarchies — список доп. иерархий [{name, field}] (паттерн Б, пуст при А) - report_params — список параметров отчёта [{name, type}] (только для объектов типа Отчет) - data_source_kindТаблица или Запрос (только для объектов типа Отчет) - data_source — имя таблицы источника (только для объектов типа Отчет с ВидИсточникаДанных: Таблица)

Иерархический справочник: если is_hierarchical: true или additional_hierarchies не пуст — используй шаблон «Иерархический список с деревом» из references/ФормаСписка.md для ФормаСписка и добавь поле Родитель в ФормаОбъекта согласно references/ФормаОбъекта.md.

Если скрипт вернул error: - сообщи пользователю текст ошибки; - если в ответе есть matches — покажи кандидатов и попроси уточнить проект/подсистему; - не создавай и не обновляй формы, пока пользователь не уточнит нужный объект.

Шаг 3: Проверь существующие формы

Если в existing_forms есть ненулевые значения — сообщи пользователю какие формы уже существуют и спроси: перезаписать или пропустить? Не создавай файл без явного подтверждения.

Шаг 4: Сгенерируй UUID

Нужен 1 UUID на каждую форму (только для тех, которые будут созданы). Вызови скилл xbsl-uuid с нужным числом (1 или 2).

Шаг 5: Создай файлы форм

Для каждой создаваемой формы создай файл в object_path.

Именование файлов

Тип формы Имя файла
ФормаОбъекта для Сотрудники СотрудникиФормаОбъекта.yaml
ФормаСписка для Сотрудники СотрудникиФормаСписка.yaml

Заголовок формы

  • ФормаОбъекта → единственное число: Сотрудник, Заказ покупателя, Контрагент
  • ФормаСписка → множественное/название объекта: Сотрудники, Заказы покупателей

Важные правила

  • ВключатьВАвтоИнтерфейс: Ложьвсегда указывай в обеих формах
  • Для ФормаСписка: используй namespace из скрипта для типов (<ns>::<ИмяОбъекта>ФормаСписка.ДанныеСтрокиСписка)
  • Для ФормаСписка: динамический список описывается в секции Свойства внизу файла (не внутри Содержимое), таблица ссылается на него через Источник: =Список
  • Колонки в ФормаСписка используют Значение: =ДанныеСтроки.Данные.<Поле> (не ПолеЗначения)
  • suggested_layout из скрипта определяет шаблон: simpleПроизвольныйШаблонФормы, panels → панели (Группа), tabs → вкладки (РазделФормы)

Шаг 6: Обнови объектный YAML

После создания файлов форм обязательно добавь секцию Интерфейс в файл объекта (object_path/object_file).

Секция добавляется сразу после строки ОбластьВидимости (или после Ид/Имя, если ОбластьВидимости отсутствует), до Реквизиты / ВидИсточникаДанных.

Для Справочника, Документа, РегистрСведений и других:

Интерфейс:
    ВключатьВАвтоИнтерфейс: Истина
    ИспользоватьСозданиеПриВводе: Истина   # только для Справочника
    Объект:
        Форма: <ИмяОбъекта>ФормаОбъекта    # только если создаётся/существует ФормаОбъекта
    Список:
        Форма: <ИмяОбъекта>ФормаСписка     # только если создаётся/существует ФормаСписка

Для объекта типа Отчет:

Структура плоская — без подсекций Объект/Список:

Интерфейс:
    ВключатьВАвтоИнтерфейс: Истина
    Форма: <ИмяОтчета>ФормаОтчета

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