framework_eng/skills/tool-usage/platform-data/platform-data-core/SKILL.md
Working with 1C platform data (Platform Data Core). The skill combines three operations: searching and analyzing configuration metadata, parsing navigation links, and executing database queries.
npx skillsauth add steelmorgan/1c-agent-based-dev-framework platform-data-coreInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Three operations that are usually used together in a single workflow:
Principle: Before working with business logic, inspect the metadata. Do not create objects "at random" unless the user explicitly asked for it.
| Tool | Parameters | Purpose |
|------|-----------|------------|
| list_metadata_objects | metaType, nameMask, maxItems | Search objects by type and name mask |
| get_metadata_structure | metaType, name | Structure: attributes, tabular sections, dimensions, resources |
| navigate_symbol | — | Navigate to the modules and procedures of found objects |
| get_call_graph | — | Analyze call chains in modules |
list_metadata_objects(metaType, nameMask) — check existence and type. For fuzzy search: nameMask: "*Номенклатура*".get_metadata_structure(metaType, name) — attributes, tabular sections, dimensions, resources. Required before building a query.navigate_symbol → get_call_graph.get_metadata_structure for verification.| Mistake | Solution | |--------|---------| | Searching by a generic word returns too many results | Narrow nameMask; specify metaType; reduce maxItems | | The agent tries to create the object itself | Protocol: the agent describes it, the user creates it in Configurator/EDT |
Syntax cheat sheet: references/query-syntax-cheatsheet.md
list_metadata_objects → get_metadata_structurevalidate_queryexecute_queryNever guess names — 1C configurations differ. One metadata lookup is cheaper than debugging a failed query.
When executing queries through execute_query (HTTP/MCP without parameters), values are set explicitly in the query text. Parameters &Имя may not be supported.
ПЕРВЫЕ NFor queries that return data rows, always limit the number of records:
ВЫБРАТЬ ПЕРВЫЕ 100
Документы.Номер,
Документы.Дата
ИЗ
Документ.РеализацияТоваровУслуг КАК Документы
Exceptions — ПЕРВЫЕ N is not needed and is harmful:
| Case | Why it is not needed |
|--------|-----------------|
| Aggregate queries (КОЛИЧЕСТВО, СУММА, МАКСИМУМ) | Return one row; ПЕРВЫЕ 1 is redundant and can produce an incorrect result when grouping |
| Existence check (ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ ... ГДЕ ...) | ПЕРВЫЕ 1 is appropriate here and already limits the result |
| ОБЪЕДИНИТЬ ВСЕ in subqueries | The limit is applied at the outer level |
❌ WRONG (if &Параметр is unavailable):
ГДЕ Товар = &Товар
✅ RIGHT (compare through primitive attributes):
ГДЕ Товар.Наименование = "iPhone 17 Pro Max"
ГДЕ Контрагент.ИНН = "7707083893"
execute_query via HTTP/MCP does not support &Ссылка parameters, so it is impossible to compare reference fields directly - use the object's primitive attributes.
❌ WRONG (direct reference comparison):
ГДЕ Документ.Контрагент = Справочник.Контрагенты.Ссылка
✅ RIGHT (compare through primitive attributes):
ГДЕ Документ.Контрагент.Наименование = "ООО Ромашка"
ГДЕ Документ.Контрагент.Код = "000001"
ГДЕ Документ.Контрагент.ИНН = "7707083893"
⚠️ Important — ambiguity risk. Name and Code are not guaranteed to be unique:
Наименование— may repeat in different folders or when duplicates existКод— unique within a catalog, preferableИНН,Артикул, and other business identifiers — use them if they are unique in this configurationWhen acceptable: diagnostics, data analysis, one-off queries where duplicates are unlikely. When not acceptable: critical selection where a false match by name will produce the wrong result — in this case, ask the user for the exact identifier or use
ПОДОБНОwith a warning about possible duplicates.
ДАТАВРЕМЯ functionГДЕ Документы.Дата >= ДАТАВРЕМЯ(2026, 1, 1)
И Документы.Дата < ДАТАВРЕМЯ(2026, 2, 1)
Format: ДАТАВРЕМЯ(Год, Месяц, День[, Час, Минута, Секунда])
ГДЕ Номенклатура.Наименование = "iPhone 17 Pro Max, 512 Гб"
ГДЕ Контрагент.ИНН = "7707083893"
| Mistake | Solution |
|--------|---------|
| NULL in calculations | ЕСТЬNULL(Поле, ЗначениеПоУмолчанию) for LEFT JOIN |
| Slow query with OR | Replace with В (...) or ОБЪЕДИНИТЬ ВСЕ |
| Slow query against the Recorder | ВЫРАЗИТЬ(Регистратор КАК Документ.Имя) + ССЫЛКА in WHERE |
| Trigger | Action |
|---------|----------|
| The user provides a link e1cib/data/... | parse_nav_link → type + link → queries/analysis |
| You need to generate a link from query data | get_nav_link(type, link) → link for the response |
parse_nav_link → extract type and ref → build query → execute_query.execute_query returned a link → get_nav_link(type, link) → return it to the user.| Capability | Purpose |
|------------|------------|
| parse_nav_link | Parsing e1cib/data/... — extracting the object type and link |
| get_nav_link | Generating a navigation link from type + link |
tools
Diagnostics for Vanessa Automation runs. Use when a feature scenario failed, artifacts were not created, or you need to classify a failure after launch.
tools
Creating and refining Vanessa Automation feature scenarios based on real project requirements. Use when you need to write or update a scenario test, not just run it.
tools
--- name: v8-session-manager description: Use when working with the 1С session manager (v8-session-manager) - launch, configuration, connecting 1С clients, reading session_list, calling proxied MCP-tools from 1С extensions, diagnostics. Triggers: mention of `v8-session-manager`, `session_list`, 1С extension MCP showcase, error “no active sessions” / “session_id required”, connecting a client to the manager via `mcpMode=ws`. provides_capabilities: # Built-in manager tools — always available whi
tools
Use when Codex needs to manage v8-runner on local 1C projects through the CLI: configure v8project.yaml, initialize infobases or EDT workspaces, build sources from Designer or EDT, run syntax checks and tests, dump infobase changes, convert source formats, load or export artifacts, launch 1C clients, or choose safe 1C automation command sequences.