api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Анализ расширения конфигурации 1С (CFE) — состав, заимствованные объекты, перехватчики, сверка с конфигурацией. Используй когда нужно понять что содержит расширение или чем его объект отличается от объекта конфигурации
$ npx -y skills add IngvarConsulting/unica --skill cfe-diff --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cfe-diffContext preview
The summary Claude sees to decide when to auto-load this skill.
Анализ расширения конфигурации 1С (CFE) — состав, заимствованные объекты, перехватчики, сверка с конфигурацией. Используй когда нужно понять что содержит расширение или чем его объект отличается от объекта конфигурации
name: cfe-diff description: Анализ расширения конфигурации 1С (CFE) — состав, заимствованные объекты, перехватчики, сверка с конфигурацией. Используй когда нужно понять что содержит расширение или чем его объект отличается от объекта конфигурации argument-hint: <набор-расширение> [<набор-конфигурация>] allowed-tools: - Read - Glob
MCP `unica`: `unica.view` по адресу `<набор>:Configuration` и ниже, `unica.check` для валидации, `unica.diff` для сверки узла с конфигурацией.
каталогу выгрузки.
BSL — операциями `code.insert` и `code.replace`, предметные описания — операциями своего семейства. Сначала `at` и `ops` для плана, затем только `executionToken` из `data.executionToken` успешного плана и только после явного подтверждения.
`unica.view {}` называет каждый набор рабочего пространства и его вид. Набор с видом `EXTENSION` — расширение; его имя и есть префикс адреса.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": { "name": "unica.view", "arguments": { "cwd": "<workspace>" } }
}Корень расширения отвечает его идентичностью и составом.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": { "cwd": "<workspace>", "at": "ext:Configuration" }
}
}| Что | Где в ответе | |-----|--------------| | Имя, синоним, версия, поставщик | `props.name`, `props.synonym`, `props.version`, `props.vendor` | | Назначение расширения | `props.extensionPurpose` | | Префикс имён | `props.properties.namePrefix` | | Режим совместимости расширения | `props.properties.extensionCompatibilityMode` | | Сколько объектов в расширении | `props.totalObjects` | | Состав по видам | `branches` — по ветви на вид с числом объектов |
`props.support.state` у расширения — `extension`: это его собственный статус поддержки, а не поддержка объекта конфигурации.
Спуск по ветви даёт объекты вида, дальше — их модули и методы, как у обычного набора: `ext:Role` → роль, `ext:Module` → модули расширения.
Вид набора выбирает валидатор: на корне расширения работает `cfe`, на его объектах — валидатор вида узла.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.check",
"arguments": { "cwd": "<workspace>", "at": "ext:Configuration" }
}
}Ответ несёт `status`, `validators` — какие валидаторы отработали — и `diagnostics`. Узел, у которого валидаторов нет, отвечает `status: "readable"` с пустым списком: это утверждение о читаемости, а не отсутствие проверки.
`unica.diff` сравнивает один и тот же логический адрес в двух наборах. Заимствованный объект есть в обоих, и различие приходит списком путей.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.diff",
"arguments": {
"cwd": "<workspace>",
"left": "main:Catalog.Валюты",
"right": "ext:Catalog.Валюты"
}
}
}`data.equal` отвечает на вопрос целиком, `data.changes[]` перечисляет расхождения с `path`, `left` и `right`. Собственный объект расширения в конфигурации не зарегистрирован, и сравнение отказывает кодом `not_found` — это и есть ответ «объект собственный, а не заимствованный».
Перехватчик — метод модуля расширения с директивой `&ИзменениеИКонтроль`, `&Перед`, `&После` или `&Вместо`. Он виден в проекции модуля расширения: спустись до `ext:<объект>.Module.<Роль>.Method` и читай методы. Текст директивы приходит вместе с телом метода по адресу `...Method.<Имя>.Body`.
Поиск по тексту дешевле обхода модулей, но он литеральный: одного запроса мало. Пройди по всем четырём директивам и считай набор полным только после последней — `&ИзменениеИКонтроль`, `&Перед`, `&После`, `&Вместо`.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.search",
"arguments": { "cwd": "<workspace>", "query": "&ИзменениеИКонтроль", "scope": "ext:Configuration" }
}
}{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.search",
"arguments": { "cwd": "<workspace>", "query": "&Вместо", "scope": "ext:Configuration" }
}
}Автоматической сверки «перенесена ли вставка `&ИзменениеИКонтроль` в конфигурацию» на канонической поверхности нет. Проверяй перенос вручную: найди вставку поиском в расширении, затем тем же поиском в наборе конфигурации и сравни найденные места. Вывод о переносе делает читатель, а не инструмент.
Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля