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

xbsl-rename

Безопасное переименование объекта конфигурации 1С:Элемент и обновление всех ссылок на него во всём проекте: типы реквизитов (Имя.Ссылка?), формы (ФормаОбъекта<Имя.Объект>), поля Интерфейс.*.Форма, XBSL-код, сами файлы объекта и его форм. Вызывай при запросах «переименуй», «rename», «поменяй имя объекта». Поддерживает два сценария: A — переименование базового объекта (Справочник, Документ, Регистр и т.д.); B — переименование формы (КомпонентИнтерфейса), при этом обновляет ссылку Форма: в YAML владельца.

Назначение

Переименовывает объект и обновляет все ссылки на него в проекте. Сначала показывает план изменений, затем применяет с подтверждением.

Алгоритм

Шаг 0 — Найди объекты и уточни у пользователя

Шаг 0.1 — Найди все объекты с таким именем

Запусти dry-run без --object-file и проверь stderr на код выхода 2 (несколько объектов):

python3 .claude/skills/xbsl-rename/scripts/rename.py \
  --old-name <СтароеИмя> --new-name <НовоеИмя> --root <корень-проекта> 2>&1; echo "EXIT:$?"
  • Код выхода 0 или 1 — объект один или не найден, продолжай.
  • Код выхода 2 — найдено несколько объектов. Покажи пользователю список из stderr и спроси какой переименовать. После выбора передавай --object-file <путь> во все последующие вызовы.

Шаг 0.2 — Определи представления автоматически

Не спрашивай пользователя о представлениях. Определяй самостоятельно:

  • Новое представление (--new-presentation):
  • Если пользователь явно написал представление в запросе — используй его.
  • Иначе — выведи форму единственного числа из нового технического имени (--new-name) самостоятельно, используя знание русской морфологии.
  • Примеры: СкладыСклад, КонтрагентыКонтрагент, МестаХраненияМесто хранения.

  • Старое представление (--old-presentation):

  • Аналогично выведи форму единственного числа из старого технического имени (--old-name).
  • Примеры: МестаХраненияМесто хранения, ЗаказыКлиентовЗаказ клиента.

Почему единственное число: технические имена объектов используются во множественном числе (Склады, Контрагенты), а поле Представление/Заголовок отображается для одного объекта в UI — поэтому единственное число.

Шаг 1 — Dry-run (показать план)

python3 .claude/skills/xbsl-rename/scripts/rename.py \
  --old-name <СтароеИмя> --new-name <НовоеИмя> \
  --new-presentation "<НовоеПредставление>" \
  [--old-presentation "<СтароеПредставление>"] \
  [--object-file <путь-к-файлу-объекта>] \
  --root <корень-проекта>

Скрипт выводит: - список файлов для переименования (сам объект + .xbsl + файлы форм СтароеИмяФорма*.yaml) - список файлов с текстовыми заменами (с указанием изменённых строк)

Шаг 2 — Показать план пользователю и ОСТАНОВИТЬСЯ

Отобрази вывод dry-run пользователю и завершить свой ответ. Не выполнять --apply в этом же ходу.

Задай вопрос с тремя вариантами ответа:

Применить переименование? 1. Да 2. Показать список изменяемых файлов 3. Нет

Обработка ответов: - «1» / «да» / «применяй» / «yes» → перейти к Шагу 3 - «2» / «список» / «покажи файлы» → вывести только список файлов (без строк изменений) и снова задать вопрос с тремя вариантами - «3» / «нет» / «отмена» → отменить, ничего не применять - Если пользователь попросил изменить параметры — скорректировать план и вернуться к Шагу 1

Шаг 3 — Применить (только после подтверждения пользователя)

python3 .claude/skills/xbsl-rename/scripts/rename.py \
  --old-name <СтароеИмя> --new-name <НовоеИмя> \
  --new-presentation "<НовоеПредставление>" \
  [--old-presentation "<СтароеПредставление>"] \
  [--object-file <путь-к-файлу-объекта>] \
  --root <корень-проекта> --apply

Что заменяется

Паттерн Пример
Тип реквизита Номенклатура.Ссылка?Товары.Ссылка?
Тип в форме ФормаОбъекта<Номенклатура.Объект>ФормаОбъекта<Товары.Объект>
Ссылка на форму в интерфейсе Форма: НоменклатураФормаОбъектаФорма: ТоварыФормаОбъекта
Имя объекта Имя: НоменклатураИмя: Товары
Составное имя формы НоменклатураФормаОбъектаТоварыФормаОбъекта (в тексте и именах файлов)
XBSL-код Номенклатура = Номенклатура (в обработчиках регистров и т.д.)

Аргументы скрипта

Аргумент Описание
--old-name Текущее имя объекта (обязательно)
--new-name Новое техническое имя объекта (обязательно)
--new-presentation Человекочитаемое представление для полей Представление/Заголовок (напр. "Места хранения"). Если не задано — используется --new-name
--old-presentation Старое представление объекта (напр. "Место хранения" для МестаХранения). Нужно когда техническое имя и его представление расходятся — скрипт заменит точное совпадение этой строки в полях Заголовок/Представление
--object-file Путь к файлу переименуемого объекта (относительно --root). Обязателен если в проекте несколько объектов с именем --old-name. Только для этого объекта и его форм меняются поля Заголовок/Представление
--root Корень проекта (по умолчанию .)
--apply Применить изменения (без флага — dry-run)

Ошибки

  • Объект не найден: скрипт выводит ошибку и завершается с кодом 1
  • Несколько проектов: скрипт обрабатывает все найденные проекты внутри --root