api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Навигация по исходникам 1С логическим адресом — найти цель, прочитать узел, спуститься по ветвям, сравнить два узла. Используй когда нужно понять состав объекта, формы, роли, схемы компоновки или модуля
$ npx -y skills add IngvarConsulting/unica --skill source-access --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/source-accessContext preview
The summary Claude sees to decide when to auto-load this skill.
Навигация по исходникам 1С логическим адресом — найти цель, прочитать узел, спуститься по ветвям, сравнить два узла. Используй когда нужно понять состав объекта, формы, роли, схемы компоновки или модуля
name: source-access description: Навигация по исходникам 1С логическим адресом — найти цель, прочитать узел, спуститься по ветвям, сравнить два узла. Используй когда нужно понять состав объекта, формы, роли, схемы компоновки или модуля argument-hint: <объект|путь|адрес> allowed-tools: - Read - Glob
имени или в тексте BSL, `unica.view` читает узел по адресу, `unica.diff` сравнивает два узла, `unica.check` отвечает о готовности набора.
физическим путём.
операциями `code.insert` и `code.replace`, предметные описания — операциями своего семейства. Сначала получи план вызовом `unica.apply` с `at` и `ops`.
Для операций СКД прочитай подробный контракт выбранной операции адресом `<узел>.Can.<операция>` в `unica.view`, например `cf:Report.F05Report.Template.F05Schema.DataSet.F05Data.Query.Can.query.set` на запросе существующего набора данных или на узле варианта. Операция подузла — поля, параметра, варианта — читается на его адресе (`…Field.<поле>`, `…Parameter.<параметр>`, `…Setting.<вариант>`), а создающая операция — на родителе. Применимые адреса, аргументы и последствия даёт этот контракт. Предметные пояснения группировок, параметров и границы создания схемы — в [справке по отчётам](../../references/use-cases/reports-printing.md).
Для табличного макета прочитай `<Template>.Can.area.add` на самом Template — новую область создаёт он, и `<Template>.Area.<область>.Can.mxl.set` на существующей области — её ячейки правит он; сам макет создаёт `template.add` на владельце. Читать макет можно шире, чем править: подробный контракт объясняет сохраняемый профиль и отказы. Предметная [справка по печати](../../references/use-cases/reports-printing.md) объясняет области, параметры и предел полной сборки DSL.
<набор исходников>:<Вид>[.<Имя>[.<Ветвь>[.<Имя>...]]]
`main:Catalog.Валюты` — объект, `main:Catalog.Валюты.Form.ФормаЭлемента` — его форма, `main:Catalog.Валюты.Module.Object.Method.ПередЗаписью` — метод модуля объекта. Вид цели задаёт число сегментов: прикладное имя, совпадающее с названием вида, объект в ветвь не превращает.
Префикс набора обязателен. Адрес без него отклоняется кодом `bad_value` с подсказкой вызвать `unica.view {}`.
Точка внутри имени экранируется `\.`, остальные точки разделяют сегменты. Так адресуются поле схемы с составным `dataPath` (`…DataSet.Данные.Field.Контрагент\.ИНН`), группа интерфейса `CommandGroup.Цены` (`…Interface.Group.CommandGroup\.Цены`), запись права на вложенный объект роли (`…Right.Catalog_Товары\.Command\.Печать`), свойство XDTO и область макета с точкой в имени. В JSON обратная косая черта удваивается: `"Контрагент\\.ИНН"`. Других последовательностей нет: `\` не перед точкой отклоняется. В имени объекта метаданных и его члена (реквизит, форма, параметр формы или операции) точки нет, и такой адрес отклоняется. Адреса в `branches` и `items` уже экранированы — передавай их без изменений.
`unica.resolve {at}` возвращает расположение существующего узла. Для владельца общего модуля это XML-дескриптор; для его `Method`, `Body` и вложенной `Region` — файл BSL и диапазон строк самого узла. Реквизит объекта указывает на XML объекта, элемент формы — на `Ext/Form.xml`; у них `lines.state: "notLineBased"`. Отсутствующий узел даёт `not_found`, даже если его владелец существует.
Обратный вызов `unica.resolve {path}` определяет объект по раскладке файлов. Одного пути к файлу недостаточно, чтобы выбрать конкретный метод или элемент: несколько узлов находятся в одном файле.
1. `unica.view {}` без аргументов — корень: наборы исходников, их формат, настройки и база. Отсюда берётся имя набора для префикса. Для готовности и незавершённых проверок вызови `unica.check {}`: он возвращает вердикт, `checks` и `diagnostics`. Успешный `view` не подтверждает готовность, а `check` с `ok: true` может иметь `status: "failed"` — оценивай сам вердикт. 2. `unica.search {corpus: "names"}` переводит в адрес имя или синоним. `kind` сужает вид, `limit` ограничивает страницу. Путь, пришедший снаружи, переводит `unica.resolve` — аварийный выход, а не обычный ход. 3. `unica.view {at}` читает узел. Ответ бывает трёх форм, и различать их надо до чтения полей:
дочерних коллекций;
`structuredContent`: первый текстовый блок `content` — конверт JSON (`at`, `kind`, `can`), второй — сам текст как в файле, без номеров строк и курсора. У целого модуля строки считаются с единицы; у диапазона абсолютное начало задаёт `props.lines.from` в конверте. 4. Спускайся по адресу из `branches`, пока не дойдёшь до нужного факта. Содержимое лежит в листьях: текст запроса — в `...DataSet.<Набор>.Query` построчно с `line` и `text`, текст метода — в `...Method.<Имя>.Body` вместе с документирующим комментарием, директивой, объявлением и строкой окончания. Текст, не помещающийся в бюджет ответа клиента (по умолчанию 16 КиБ), не отдаётся: отказ `result_too_large` сначала предлагает в `next` диапазон полных строк, который помещается в бюджет, если такой есть. Адреса `Region` и `Method` тоже сохраняются.
Строка или диапазон BSL читается адресом `…Body#L12` либо `…Body#L12-L20`, включая `…Method.<Имя>.Body#L12-L20`. Номера абсолютные, от начала файла. `view` сохраняет точные байты и разделители выбранных строк, а `resolve` называет тот же диапазон. Выход за EOF или за границы Body метода даёт `bad_value`. Такой адрес предназначен для чтения: для правки прочитай целый содержащий метод и используй его адрес без `#L…`.
Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля