api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Модуль управляемой формы 1С. Используй когда нужно написать или отревьюить обработчики формы, расставить директивы компиляции, сократить серверные вызовы и трафик, разобраться с параметрами формы, подключаемыми через УстановитьДействие обработчиками или клиент-серверной границей
$ npx -y skills add IngvarConsulting/unica --skill form-events --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/form-eventsContext preview
The summary Claude sees to decide when to auto-load this skill.
Модуль управляемой формы 1С. Используй когда нужно написать или отревьюить обработчики формы, расставить директивы компиляции, сократить серверные вызовы и трафик, разобраться с параметрами формы, подключаемыми через УстановитьДействие обработчиками или клиент-серверной границей
name: form-events description: "Модуль управляемой формы 1С. Используй когда нужно написать или отревьюить обработчики формы, расставить директивы компиляции, сократить серверные вызовы и трафик, разобраться с параметрами формы, подключаемыми через УстановитьДействие обработчиками или клиент-серверной границей в модуле формы."
контракт каждой — `argsSchema`, `execution`, `previewRequired`, `dryRunRequired`. Контракт вызова бери оттуда, а не из этого текста; при `implemented: true` используй опубликованную `argsSchema`; при `support.state: limited` разрешено только подмножество `support.supportedArgs`. При `support.state: unavailable` остановись; не выдумывай аргументов при `argsSchema: null`. Для плановой операции сначала проверь результат `dryRun: true`, затем исполняй запрос с `dryRun: false`. Preview не фиксирует входы между вызовами. Не обходи контракт прямым runner-ом.
A form module holds client and server code in one file, and the directive on each procedure decides which. Everything else follows:
1. Decide which side the logic belongs to before writing it: needs the database or the object → server; needs the user or the form's visual state → client. 2. Inspect the form with `unica.view` on the form node for the declared events, parameters, and items, and `unica.view` on the object node for the object behind it. 3. Read the existing module with `unica.view` on the module node (its `Method` branch lists the methods) before adding to it. 4. Count the server calls the change adds on the path of a single user action. If it adds one, name the reason. 5. Declare any new form attribute through `unica.apply` (`attribute.add` at the form address) before reading it in the module. A form parameter is not an attribute and has no `unica.apply` operation yet: name that gap instead of adding an attribute in its place. 6. Apply module changes with `unica.apply`, one verifiable step at a time, giving every new procedure exactly one directive. A handler is wired at the event's own address from the `Event` branch of the form or its item, `…Form.<Form>[.Item.<Item>…].Event.<Event>`: `event.implement` writes the binding and the procedure, `event.bind` writes only the binding with `values: {handler[, callType]}`. The event and its item are named by the address, not by arguments. 7. Verify statically with `unica.check` on the module node (test runs are outside the v0.13 surface), and require separate evidence for runtime behavior and opening the affected form.
When a handler must disable, lock, or re-enable a form command in the UI, do not write `Команды[ИмяКоманды].Доступность`: the form command object is not the UI element whose availability is shown to the user. Inspect the form first with `unica.view` using its qualified `at` address (CTR.SOURCE.LOGICAL-NODE-VIEW-SHAPE). Example calls for the form and its item collection:
{"name": "unica.view", "arguments": {"at": "main:Catalog.Номенклатура.Form.ФормаЭлемента"}}{"name": "unica.view", "arguments": {"at": "main:Catalog.Номенклатура.Form.ФормаЭлемента.Item"}}A node returns `props` and `branches`; a collection page returns `items` with `at` addresses. Follow all nested `Item` branches using their returned addresses and all pages using the returned `cursor`, keeping the address and read parameters. The current view exposes only `tag`, `title`, `visible`, `enabled`, and `readOnly` in an item's `props` (`title` is `null` when no distinct title is set).
To establish a link, the item's `CommandName` must match `Form.Command.<ИмяКоманды>` or the relevant standard-command reference. However, the current view does not expose `CommandName` or `binding`: the item tree alone cannot prove command links or that every linked item has been found. Do not guess links from names or titles. For the missing data, use the emergency source bridge, which permits opening a file outside Unica:
{"name": "unica.resolve", "arguments": {"at": "main:Catalog.Номенклатура.Form.ФормаЭлемента"}}The returned `path` is relative to t
Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля