| name | xbsl-image-add |
| description | Добавление фото и изображений (аватар, фото товара, иконка) к объекту конфигурации 1С:Элемент. Поддерживает 2 паттерна: P5 — простое фото без обработки (ВыборФайлов + Картинка); P6 — фото с серверной обработкой (ресайз, обрезка по кругу через ОбрабатываемоеИзображение). Вызывай когда пользователь хочет добавить аватар сотрудника, фото товара, логотип компании, изображение профиля или любое одиночное изображение к справочнику или документу. НЕ для файловых вложений (используй xbsl-file-add).
|
| compatibility | Requires Python 3. |
Во всех командах ниже {python} означает python в Windows и python3 в macOS/Linux/WSL. Выбирай команду сразу по текущей ОС, не запускай оба варианта.
Ключевое отличие от xbsl-file-add
ВыборФайлов не хранит файл автоматически — он вызывает обработчик ПриИзменении, который должен загрузить файл через ЗагрузкаФайлов и сохранить в реквизит. Это требует .xbsl файла обработчика — его нет в xbsl-file-add.
Прочитай references/patterns.md перед выполнением — там YAML и XBSL шаблоны для обоих паттернов.
Алгоритм
Шаг 1 — Определить паттерн и placeholder
| Паттерн | Когда выбирать |
|---|
| P5 — Простое фото | загрузка без обработки, хранится как есть |
| P6 — Фото с обработкой | нужен ресайз и/или обрезка по кругу (аватар профиля) |
Placeholder-изображение (заглушка когда фото не загружено):
| Контекст | Placeholder |
|---|
| Фото/аватар аккаунта, пользователя, сотрудника, контакта | Ресурс{Аккаунт.svg}.Ссылка |
| Любое другое изображение (товар, документ, объект) | Ресурс{Файл.svg}.Ссылка |
Если пользователь просит «фото аккаунта», «аватар», «фото профиля» — используй Аккаунт.svg.
Во всех остальных случаях — Файл.svg.
Шаг 2 — Анализ объекта (параллельно с шагом 1)
{python} .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> — создан/обновлён обработчик