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

xbsl-image-add

Добавление фото и изображений (аватар, фото товара, иконка) к объекту конфигурации 1С:Элемент. Поддерживает 2 паттерна: P5 — простое фото без обработки (ВыборФайлов + Картинка); P6 — фото с серверной обработкой (ресайз, обрезка по кругу через ОбрабатываемоеИзображение). Вызывай когда пользователь хочет добавить аватар сотрудника, фото товара, логотип компании, изображение профиля или любое одиночное изображение к справочнику или документу. НЕ для файловых вложений (используй xbsl-file-add).

Ключевое отличие от 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> — создан/обновлён обработчик