| name | xbsl-rename |
| description | Безопасное переименование объекта конфигурации 1С:Элемент и обновление всех ссылок на него во всём проекте: типы реквизитов (Имя.Ссылка?), формы (ФормаОбъекта<Имя.Объект>), поля Интерфейс.*.Форма, XBSL-код, сами файлы объекта и его форм. Вызывай при запросах «переименуй», «rename», «поменяй имя объекта». Поддерживает два сценария: A — переименование базового объекта (Справочник, Документ, Регистр и т.д.); B — переименование формы (КомпонентИнтерфейса), при этом обновляет ссылку Форма: в YAML владельца.
|
| compatibility | Requires Python 3. |
Во всех командах ниже {python} означает python в Windows и python3 в macOS/Linux/WSL. Выбирай команду сразу по текущей ОС, не запускай оба варианта.
Назначение
Переименовывает объект и обновляет все ссылки на него в проекте.
Сначала показывает план изменений, затем применяет с подтверждением.
Алгоритм
Шаг 0 — Найди объекты и уточни у пользователя
Шаг 0.1 — Найди все объекты с таким именем
Запусти dry-run без --object-file и проверь stderr на код выхода 2 (несколько объектов):
{python} .claude/skills/xbsl-rename/scripts/rename.py \
--old-name <СтароеИмя> --new-name <НовоеИмя> --root <корень-проекта> 2>&1; echo "EXIT:$?"
- Код выхода 0 или 1 — объект один или не найден, продолжай.
- Код выхода 2 — найдено несколько объектов. Покажи пользователю список из stderr и спроси какой переименовать. После выбора передавай
--object-file <путь> во все последующие вызовы.
Шаг 0.2 — Определи представления автоматически
Не спрашивай пользователя о представлениях. Определяй самостоятельно:
Почему единственное число: технические имена объектов используются во множественном числе (Склады, Контрагенты), а поле Представление/Заголовок отображается для одного объекта в UI — поэтому единственное число.
Шаг 1 — Dry-run (показать план)
{python} .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» / «да» / «применяй» / «yes» → перейти к Шагу 3
- «2» / «список» / «покажи файлы» → вывести только список файлов (без строк изменений) и снова задать вопрос с тремя вариантами
- «3» / «нет» / «отмена» → отменить, ничего не применять
- Если пользователь попросил изменить параметры — скорректировать план и вернуться к Шагу 1
Шаг 3 — Применить (только после подтверждения пользователя)
{python} .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