---
name: 1c-support-state
description: Чтение и переключение состояния поддержки конфигурации 1С в XML-выгрузке - разрешить правку типового объекта, снять с поддержки, вернуть на замок, включить возможность изменения. Используй когда пользователь спрашивает про состояние поддержки, объект на замке, снятие с поддержки
argument-hint: <путь> [-Get | -Set editable|off-support|locked | -Capability on|off]
allowed-tools:
  - Bash
  - Read
  - Glob
---

# /support-state - Состояние поддержки конфигурации в XML-выгрузке

Читает и переключает состояние поддержки типовой (вендорской) конфигурации в файловой XML-выгрузке: пообъектные правила (на замке / редактируется / снят с поддержки) и глобальную возможность изменения. Работает с файлом `Ext/ParentConfigurations.bin` внутри выгрузки.

> **ВАЖНО**: изменения затрагивают ТОЛЬКО файлы выгрузки на диске. Чтобы они подействовали в информационной базе - загрузи выгрузку обратно (полная загрузка: `/db-load-xml`, затем `/db-update`). Если выгрузка под git, изменение `.bin` видно в диффе и откатывается штатно.

## Usage

```
/support-state <путь>                                 - показать состояние (режим по умолчанию)
/support-state <путь к объекту> -Set editable         - разрешить правку объекта (поддержка сохраняется)
/support-state <путь к объекту> -Set off-support      - снять объект с поддержки
/support-state <путь к объекту> -Set locked           - вернуть объект на замок
/support-state <корень выгрузки> -Set editable        - разрешить добавление новых объектов (правило корня)
/support-state <корень выгрузки> -Capability on|off   - вкл/выкл возможность изменения всей конфигурации
```

`<путь>` - XML-файл объекта, каталог объекта или корень выгрузки; корень конфигурации и `.bin` находятся автоматически (поиск вверх по дереву каталогов, не больше 12 уровней).

## Команда

```powershell
powershell.exe -NoProfile -File skills/1c-support-state/scripts/support-state.ps1 -Path <путь> [режим]
```

### Параметры скрипта

| Параметр | Обязательный | Описание |
|----------|:------------:|----------|
| `-Path <путь>` | да | XML объекта, каталог объекта или корень выгрузки |
| `-Get` | нет | Показать состояние (по умолчанию, если режим не задан) |
| `-Set <режим>` | нет | `editable` / `off-support` / `locked` - переключить правило объекта |
| `-Capability <on/off>` | нет | Включить/выключить возможность изменения конфигурации целиком |

Задается не больше одного режима (`-Get` / `-Set` / `-Capability`).

## Семантика состояний

| Состояние | Правило 1С | Правка | Обновления вендора |
|-----------|-----------|:------:|:------------------:|
| `locked` | объект на замке | нет | да |
| `editable` | редактируется с сохранением поддержки | да | да (возможны конфликты при обновлении) |
| `off-support` | снят с поддержки | да | по этому объекту прекращаются |

`-Capability on` включает возможность изменения, при этом ВСЕ объекты поставщика переходят «на замок» (как в Конфигураторе) - дальше включай правку точечно через `-Set editable`. `-Capability off` делает всю конфигурацию read-only.

## Коды возврата

| Код | Описание |
|-----|----------|
| 0 | Успешно, включая легитимный no-op (не на поддержке, поддержка снята полностью, уже в целевом состоянии, объект не в поддержке) |
| 1 | Ошибка: путь не найден, корень конфигурации не найден, неизвестный формат `.bin`, `-Set` при выключенной возможности изменения, задано больше одного режима |
| 2 | Неверные аргументы python-версии (argparse) |

## Ограничения

- Если конфигурация на поддержке у НЕСКОЛЬКИХ поставщиков, `-Set` меняет правило объекта во ВСЕХ блоках поставщиков одинаково (раздельная настройка по поставщикам не поддерживается).
- Для расширений (CFE) состояние поддержки не применимо - скрипт распознает расширение и завершается без изменений.
- Подробное описание формата `ParentConfigurations.bin` - в [docs/parent-configurations-bin.md](docs/parent-configurations-bin.md).

## После выполнения

1. Покажи вывод скрипта (текущее состояние или что изменено, число измененных записей).
2. При изменении напомни: чтобы применить в ИБ - загрузить выгрузку обратно (полная загрузка).

## Примеры

```powershell
# Показать состояние поддержки выгрузки и правило конкретного объекта
powershell.exe -NoProfile -File skills/1c-support-state/scripts/support-state.ps1 -Path "C:\Dump\MyConfig\Documents\МойДокумент.xml"

# Разрешить правку объекта с сохранением поддержки
powershell.exe -NoProfile -File skills/1c-support-state/scripts/support-state.ps1 -Path "C:\Dump\MyConfig\Documents\МойДокумент.xml" -Set editable

# Включить возможность изменения всей конфигурации
powershell.exe -NoProfile -File skills/1c-support-state/scripts/support-state.ps1 -Path "C:\Dump\MyConfig" -Capability on
```
