Skip to content
Development
Skill

/module-placement

Размещение кода 1С по модулям. Используй когда нужно выбрать между модулем объекта, модулем менеджера и общим модулем, задать контекст и флаги общего модуля, решить про Вызов сервера и ПовтИсп, назвать модуль по постфиксу, написать обработчики представления в модуле менеджера

BOOST
From plugin
unica
22749 skills1 MCP
Install
$ npx -y skills add IngvarConsulting/unica --skill module-placement --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/module-placement

Context preview

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

Размещение кода 1С по модулям. Используй когда нужно выбрать между модулем объекта, модулем менеджера и общим модулем, задать контекст и флаги общего модуля, решить про Вызов сервера и ПовтИсп, назвать модуль по постфиксу, написать обработчики представления в модуле менеджера

SKILL.md

module-placement.SKILL.md
name: module-placement
description: "Размещение кода 1С по модулям. Используй когда нужно выбрать между модулем объекта, модулем менеджера и общим модулем, задать контекст и флаги общего модуля, решить про Вызов сервера и ПовтИсп, назвать модуль по постфиксу, написать обработчики представления в модуле менеджера или механизм первого запуска и обновления версии."

Module Placement

MCP routing

  • Preferred path: use MCP `unica` tools `unica.view {}`, `unica.view` on the object node, `unica.apply`, `unica.view` on the subsystem node, `unica.search`, `unica.check`, and `unica.run`.
  • Runtime идёт через `unica.run`: вызов без `op` отдаёт словарь операций и

контракт каждой — `argsSchema`, `execution`, `previewRequired`, `dryRunRequired`. Контракт вызова бери оттуда, а не из этого текста; при `implemented: true` используй опубликованную `argsSchema`; при `support.state: limited` разрешено только подмножество `support.supportedArgs`. При `support.state: unavailable` остановись; не выдумывай аргументов при `argsSchema: null`. Для плановой операции сначала проверь результат `dryRun: true`, затем исполняй запрос с `dryRun: false`. Preview не фиксирует входы между вызовами. Не обходи контракт прямым runner-ом.

  • Use `unica.docs` with `source: "development-standard"` for the standards about module hosting: 455, 469, 474, 486, 556, 679, 697, 724, 746, and diagnostics АПК:73, АПК:80, АПК:85, АПК:90, АПК:125, АПК:363, АПК:435-439, АПК:444, АПК:1245. These are standards, not evidence of runtime behavior; confirm the wording before citing one.
  • Use `unica.view` on the role node when the module enters privileged mode or carries the privileged flag.
  • Do not call internal analyzer, runtime, standards, or package adapters directly. They are hidden behind MCP `unica`.

Scope boundary

This skill owns **where code lives**: which module hosts it and what that module may do. Classifying an exported method as public, service, or overridable interface, and judging what a change does to compatibility, belongs to `api-design`. Form module directives and the server-call budget inside a form belong to `form-events`. Object write handlers belong to `object-events`.

References

  • Read `../../references/platform/module-placement.md` for the hosting decision, the four common module contexts, the server call flag, cached modules, presentation handlers, and first launch.
  • Read `../../references/platform/form-events.md` when the code is going into a form module.
  • Read `../../references/platform/object-events.md` when it is an object event handler.

Core model

One question per module kind (std486):

  • **Instance state** — works with `ЭтотОбъект` and module variables, including before the object is written → object module. Calling its exported code from elsewhere usually costs a `ПолучитьОбъект()`, which reads the whole object with its tabular sections.
  • **Static for the metadata object** — about the set of objects, or about an already-written one passed as a reference → manager module. It must not require an instance.
  • **Cannot be attributed to one metadata object** → common module, grouped by one subsystem or one functional purpose.

Then pick exactly one of the four common module contexts (std469) and name it by its postfix. Anything outside those four is АПК:125.

| Context | Клиент (упр.) | Сервер | Внеш. соед. | Клиент (обычн.) | Вызов сервера | Postfix | | --- | --- | --- | --- | --- | --- | --- | | Server | – | yes | yes | yes | – | none / `Сервер` | | Server for client calls | – | yes | – | – | yes | `ВызовСервера` | | Client | yes | – | – | yes | – | `Клиент` / `Глобальный` | | Client-server | yes | yes | yes | yes | – | `КлиентСервер` |

Workflow

1. Answer the three std486 questions before opening any module. The answer, not convenience, picks the host. 2. Map the neighbourhood with `unica.view {}` and `unica.view` on the subsystem node: an existing module for the same subsystem or purpose is a reason to extend rather than add. 3. Find the callers with `unica.view` at `<method>.Caller` before moving anything (`unica.search` by the method name adds literal mentions) — a move that changes the module context changes what the callers may pass. 4. When adding a common module, choose the context row first, then `unica.apply` with the matching flags and postfix. 5. Set `Вызов сервера` only for API genuinely called from the client, and state what it exposes. 6. Apply code with `unica.apply`, one verifiable step at a time. 7. Verify statically with `unica.check` on the module node (test runs are outside the v0.13 surface) and report runtime behavior as unverified.

Design rules

  • A server module keeps `Вызов сервера` off so procedures taking mutable types work correctly; exported procedures in a `ВызовСервера` module must not take mutable types (std469).
  • `Вызов сервера` is an exposure decision, not a convenience (std679). The exposed API must not reveal data the user cannot see or perform actions they are not allowed. A server calculation returns the result, not the source data.
  • In a managed application, object instances are worked with on the server. Do not create or fetch them from client common modules, including under `ТолстыйКлиентУправляемоеПриложение` (std679).
  • Cache what comes from the database, an external source, or expensive computation — never what is computed faster than it is retrieved (std724, АПК:435 and its siblings). An exported procedure in a cached module is АПК:444.
  • A cached value has a bounded lifetime and is also dropped on memory pressure, worker process restart, or a client switching worker process. Keep the parameter range narrow so the cache is actually read back.
  • Presentation handlers in the manager module run on every presentation request: no queries, no fetching objects, no dotted access to reference attributes, and no predefined items that exchange may not have loaded yet (std746, std697).
  • First launch and release update must be idempotent, and
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-исходников). Используй когда нужно начать новую конфигурацию с нуля