Ключевое отличие от xbsl-file-add
ВыборФайлов не хранит файл автоматически — он вызывает обработчик ПриИзменении, который должен загрузить файл через ЗагрузкаФайлов и сохранить в реквизит. Это требует .xbsl файла обработчика — его нет в xbsl-file-add.
Прочитай references/patterns.md перед выполнением — там YAML и XBSL шаблоны для обоих паттернов.
Алгоритм
Шаг 1 — Определить паттерн и placeholder
| Паттерн | Когда выбирать |
|---|---|
| P5 — Простое фото | загрузка без обработки, хранится как есть |
| P6 — Фото с обработкой | нужен ресайз и/или обрезка по кругу (аватар профиля) |
Placeholder-изображение (заглушка когда фото не загружено):
| Контекст | Placeholder |
|---|---|
| Фото/аватар аккаунта, пользователя, сотрудника, контакта | Ресурс{Аккаунт.svg}.Ссылка |
| Любое другое изображение (товар, документ, объект) | Ресурс{Файл.svg}.Ссылка |
Если пользователь просит «фото аккаунта», «аватар», «фото профиля» — используй
Аккаунт.svg. Во всех остальных случаях —Файл.svg.
Шаг 2 — Анализ объекта (параллельно с шагом 1)
python3 .claude/skills/xbsl-form-info/scripts/form_info.py --name <ИмяОбъекта> --root .
Из результата взять:
- object_path + object_file — путь к YAML объекта
- fields — проверить наличие реквизита Фото
- existing_forms — найти YAML формы объекта
Если скрипт вернул error — сообщи пользователю и остановись.
Если реквизит Фото уже есть в fields — спроси пользователя:
- Использовать существующий → пропустить шаги 3 и 4, имя реквизита Фото, имя метода ПриВыбореФото
- Создать новый → спроси имя нового реквизита, продолжить со шага 3; имя метода — ПриВыборе<ИмяРеквизита>
Шаг 3 — UUID
Вызвать скилл xbsl-uuid → 1 UUID для реквизита изображения.
Шаг 4 — Обновить YAML объекта
Добавить в конец Реквизиты (шаблон из references/patterns.md, раздел «Реквизит»):
-
Ид: <UUID>
Имя: <ИмяРеквизита>
Тип: ДвоичныйОбъект.Ссылка?
Шаг 5 — Обновить форму объекта
Найти файл формы из existing_forms["ФормаОбъекта"].
Если форма не найдена: вызови скилл xbsl-form-add для создания формы объекта (и формы списка если нужна), затем продолжи выполнение этого скилла — не останавливайся, добавь изображение в только что созданную форму.
Если форма найдена: добавить группу с Картинка + ВыборФайлов по шаблону из references/patterns.md.
Место вставки группы фото: - Объект-человек (сотрудник, пользователь, контакт, аккаунт) → в начало формы, перед полями - Любой другой объект (документ, товар, задача и т.д.) → в конец формы, после полей
Шаг 6 — Добавить .xbsl обработчик
Файл называется по имени формы: <НазваниеФормы>.xbsl, рядом с YAML формы.
- Если файл уже существует — дописать метод(ы) в конец
- Если не существует — создать новый
Шаблоны из references/patterns.md:
- P5: метод ПриВыбореФото
- P6: метод ПриВыбореФото + статический серверный метод ОбработатьФото
Имя реквизита — Фото (по умолчанию). Имя метода — ПриВыборе<ИмяРеквизита> (например ПриВыбореФото, ПриВыбореАватара).
Шаг 7 — Итог
Перечислить изменённые/созданные файлы:
- <ОбъектYAML> — добавлен реквизит ДвоичныйОбъект.Ссылка?
- <ФормаYAML> — добавлены компоненты Картинка + ВыборФайлов
- <ФормаXBSL> — создан/обновлён обработчик