Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: xbsl-file-add description: > Добавление файловых вложений (компонент СписокФайлов) к существующему объекту конфигурации 1С:Элемент. Поддерживает 4 паттерна: P1 — стандартные вложения через встроенный реквизит Файлы (новых реквизитов нет); P2 — одиночный файл (ДвоичныйОбъект.Ссылка?, макс. 1); P3 — категория файлов (Массив<ДвоичныйОбъект.Ссылка> с лимитами и фильтрами); P4 — несколько категорий (несколько P3). Вызывай когда пользователь хочет добавить вложения, загрузку файлов, скан договора, логотип, прикреплённые документы к справочнику или документу. НЕ для работы с изображениями (используй xbsl-image-add). compatibility: Requires Python 3.
На target 10.0+ перед сценарием загрузки/выгрузки файла прочитай references/file-names-10.md: недопустимые символы в имени обрабатываются режимом всего приложения. Глобальный режим меняй только по явному запросу; при НеИсправлять предусмотрена ошибка имени.
Во всех командах ниже {python} означает python в Windows и python3 в macOS/Linux/WSL. Выбирай команду сразу по текущей ОС, не запускай оба варианта.
Алгоритм
Шаг 1 — Определить паттерн (P1–P4)
Прочитай references/patterns.md и выбери паттерн по описанию пользователя:
| Паттерн | Реквизит | Когда | |
|---|---|---|---|
| P1 | встроенный Файлы | произвольные вложения без ограничений по типу/количеству | |
| P2 | ДвоичныйОбъект.Ссылка? | ровно один файл (скан, логотип, один обязательный документ) | |
| P3 | Массив<ДвоичныйОбъект.Ссылка> | именованная категория файлов с лимитами и/или фильтром | |
| P4 | несколько реквизитов P3 | объект с несколькими категориями документов |
Шаг 2 — Анализ объекта (параллельно с шагом 1)
Вызови скилл xbsl-form-info:
{python} skills/xbsl-form-info/scripts/form_info.py --name <ИмяОбъекта> --root .
Используй результат:
object_path— путь к папке подсистемыobject_file— имя YAML-файла объекта (object_path/object_file)fields— проверь конфликт имён реквизитов (для P2–P4)existing_forms— найди YAML форм для шага 5
Если скрипт вернул error — сообщи пользователю и остановись.
Шаг 3 — UUID
- P1: UUID не нужен
- P2 или P3: вызови скилл
xbsl-uuid→ 1 UUID - P4: вызови скилл
xbsl-uuid→ N UUID (по количеству новых реквизитов)
Шаг 4 — Обновить YAML объекта (только P2–P4)
Открой object_path/object_file. Добавь новые реквизиты в конец секции Реквизиты.
Шаблоны из references/patterns.md:
- P2: реквизит
ДвоичныйОбъект.Ссылка? - P3: реквизит
Массив<ДвоичныйОбъект.Ссылка> - P4: несколько реквизитов P3
Для P1 шаг 4 пропустить — реквизит Файлы уже присутствует в объекте.
Шаг 5 — Обновить форму
Найди YAML-файл формы из existing_forms["ФормаОбъекта"].
Если форма не найдена: сообщи пользователю и предложи сначала вызвать скилл xbsl-form-add.
Если форма найдена: добавь компонент СписокФайлов по шаблону из references/patterns.md. Место вставки — в конец Содержимое формы (после последнего поля/группы, перед закрытием блока).
Шаг 6 — Итог
Перечисли изменённые файлы:
- P1: только файл формы
- P2–P4: файл объекта + файл формы