Skip to content
Development
Skill

/source-access

Навигация по исходникам 1С логическим адресом — найти цель, прочитать узел, спуститься по ветвям, сравнить два узла. Используй когда нужно понять состав объекта, формы, роли, схемы компоновки или модуля

BOOST
From plugin
unica
22749 skills1 MCP
Install
$ npx -y skills add IngvarConsulting/unica --skill source-access --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/source-access

Context preview

The summary Claude sees to decide when to auto-load this skill.

Навигация по исходникам 1С логическим адресом — найти цель, прочитать узел, спуститься по ветвям, сравнить два узла. Используй когда нужно понять состав объекта, формы, роли, схемы компоновки или модуля

SKILL.md

source-access.SKILL.md
name: source-access
description: Навигация по исходникам 1С логическим адресом — найти цель, прочитать узел, спуститься по ветвям, сравнить два узла. Используй когда нужно понять состав объекта, формы, роли, схемы компоновки или модуля
argument-hint: <объект|путь|адрес>
allowed-tools:
  - Read
  - Glob

/source-access — чтение исходников логическим адресом

MCP routing

  • Всё чтение исходников идёт одним MCP `unica`: `unica.search` ищет цель по

имени или в тексте BSL, `unica.view` читает узел по адресу, `unica.diff` сравнивает два узла, `unica.check` отвечает о готовности набора.

  • Не вызывай внутренние MCP/CLI-адаптеры и не подменяй логическую цель

физическим путём.

  • Чтение не меняет исходники. Правка идёт одним `unica.apply`: BSL —

операциями `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}` читает узел. Ответ бывает трёх форм, и различать их надо до чтения полей:

  • **узел** — `props` с фактами самого узла и `branches` со счётчиками

дочерних коллекций;

  • **страница коллекции** — `items`, каждый со своим `at`;
  • **исходный текст** — `Body` модуля или метода BSL. В ответе нет

`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…`.

Read more
Ships withunica

Unica (Ю&#x301;ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.

Get the whole plugin

Other skills on unica.

api-design
Skill

api-design

Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…

autonomous-server
Skill

autonomous-server

Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…

background-jobs
Skill

background-jobs

Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…

bsp-patterns
Skill

bsp-patterns

Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…

cf-edit
Skill

cf-edit

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…

cf-init
Skill

cf-init

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля