Создание формы интерфейса в 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_hierarchical — true если справочник имеет Иерархический: Истина (паттерн А)
- 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).
Секция добавляется сразу после строки ОбластьВидимости (или после Ид/Имя, если ОбластьВидимости отсутствует), до Реквизиты / ВидИсточникаДанных.
Для Справочника, Документа, РегистрСведений и других:
Интерфейс:
ВключатьВАвтоИнтерфейс: Истина
ИспользоватьСозданиеПриВводе: Истина # только для Справочника
Объект:
Форма: <ИмяОбъекта>ФормаОбъекта # только если создаётся/существует ФормаОбъекта
Список:
Форма: <ИмяОбъекта>ФормаСписка # только если создаётся/существует ФормаСписка
Для объекта типа Отчет:
Структура плоская — без подсекций Объект/Список:
Интерфейс:
ВключатьВАвтоИнтерфейс: Истина
Форма: <ИмяОтчета>ФормаОтчета
Правила:
- Если объект уже имеет секцию Интерфейс — обнови только нужные поля, не перезаписывай остальные
- ИспользоватьСозданиеПриВводе: Истина — только для Справочник; для Документ, Отчет и других типов не добавляй
- Добавляй только те подсекции (Объект, Список), формы для которых существуют или создаются