framework/skills/tool-usage/platform-data/platform-data-core/SKILL.md
Platform data: metadata, nav links, safe 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.
Три операции, которые обычно используются вместе в одном рабочем цикле:
Принцип: Перед работой с бизнес-логикой — исследовать метаданные. Не создавать объекты «наугад», если пользователь не попросил явно.
| Tool | Параметры | Назначение |
|------|-----------|------------|
| list_metadata_objects | metaType, nameMask, maxItems | Поиск объектов по типу и маске имени |
| get_metadata_structure | metaType, name | Структура: реквизиты, ТЧ, измерения, ресурсы |
| navigate_symbol | — | Переход к модулям, процедурам найденных объектов |
| get_call_graph | — | Анализ цепочек вызовов в модулях |
list_metadata_objects(metaType, nameMask) — проверить существование и тип. Для нечёткого поиска: nameMask: "*Номенклатура*".get_metadata_structure(metaType, name) — реквизиты, ТЧ, измерения, ресурсы. Обязательно перед построением запроса.navigate_symbol → get_call_graph.get_metadata_structure для верификации.| Ошибка | Решение | |--------|---------| | Поиск по общему слову даёт много результатов | Сузить nameMask; указать metaType; уменьшить maxItems | | Агент пытается создать объект сам | Протокол: агент описывает, пользователь создаёт в Конфигураторе/EDT |
Справочник синтаксиса: references/query-syntax-cheatsheet.md
list_metadata_objects → get_metadata_structurevalidate_queryexecute_queryНикогда не угадывай имена — конфигурации 1С различаются. Один вызов за метаданными дешевле отладки провалившегося запроса.
При выполнении запросов через execute_query (HTTP/MCP без параметров) значения задаются явно в тексте запроса. Параметры &Имя могут не поддерживаться.
Для запросов, возвращающих строки данных, всегда ограничивай количество записей:
ВЫБРАТЬ ПЕРВЫЕ 100
Документы.Номер,
Документы.Дата
ИЗ
Документ.РеализацияТоваровУслуг КАК Документы
Исключения — ПЕРВЫЕ N не нужен и вреден:
| Случай | Почему не нужен |
|--------|-----------------|
| Агрегатные запросы (КОЛИЧЕСТВО, СУММА, МАКСИМУМ) | Возвращают одну строку; ПЕРВЫЕ 1 избыточен и может дать неверный результат при группировке |
| Проверка существования (ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ ... ГДЕ ...) | ПЕРВЫЕ 1 здесь уместен и уже ограничивает |
| ОБЪЕДИНИТЬ ВСЕ в подзапросах | Ограничение задаётся на внешнем уровне |
❌ НЕПРАВИЛЬНО (если &Параметр недоступен):
ГДЕ Товар = &Товар
✅ ПРАВИЛЬНО (сравнение через примитивные реквизиты):
ГДЕ Товар.Наименование = "iPhone 17 Pro Max"
ГДЕ Контрагент.ИНН = "7707083893"
execute_query через HTTP/MCP не поддерживает параметры &Ссылка, поэтому сравнивать ссылочные поля напрямую невозможно — используй примитивные реквизиты объекта.
❌ НЕПРАВИЛЬНО (сравнение ссылок напрямую):
ГДЕ Документ.Контрагент = Справочник.Контрагенты.Ссылка
✅ ПРАВИЛЬНО (сравнение через примитивные реквизиты):
ГДЕ Документ.Контрагент.Наименование = "ООО Ромашка"
ГДЕ Документ.Контрагент.Код = "000001"
ГДЕ Документ.Контрагент.ИНН = "7707083893"
⚠️ Важно — риск неоднозначности. Наименование и Код не гарантируют уникальность:
Наименование— может повторяться в разных папках или при дубляхКод— уникален внутри справочника, предпочтительнееИНН,Артикули другие бизнес-идентификаторы — используй, если они уникальны в этой конфигурацииКогда допустимо: диагностика, анализ данных, разовые запросы где дубли маловероятны. Когда недопустимо: критически важная выборка, где ложное совпадение по имени даст неверный результат — в этом случае уточни у пользователя точный идентификатор или используй
ПОДОБНОс предупреждением о возможных дублях.
Раз параметры &Имя недоступны, значения задаются литералами: даты — через ДАТАВРЕМЯ(Год, Месяц, День[, Час, Минута, Секунда]), строки — в двойных кавычках. Синтаксис и примеры: references/query-syntax-cheatsheet.md §§ «Работа с датами», «Строковые значения».
| Ошибка | Решение |
|--------|---------|
| NULL в вычислениях | ЕСТЬNULL(Поле, ЗначениеПоУмолчанию) при LEFT JOIN |
| Медленный запрос с ИЛИ | Заменить на В (...) или ОБЪЕДИНИТЬ ВСЕ |
| Медленный запрос к Регистратору | ВЫРАЗИТЬ(Регистратор КАК Документ.Имя) + ССЫЛКА в ГДЕ |
| Триггер | Действие |
|---------|----------|
| Пользователь даёт ссылку e1cib/data/... | parse_nav_link → тип + ссылка → запросы/анализ |
| Нужно сформировать ссылку по данным из запроса | get_nav_link(тип, ссылка) → ссылка для ответа |
parse_nav_link → извлечь тип и ref → построить запрос → execute_query.execute_query вернул ссылку → get_nav_link(тип, ссылка) → вернуть пользователю.| Capability | Назначение |
|------------|------------|
| parse_nav_link | Разбор e1cib/data/... — извлечение типа объекта и ссылки |
| get_nav_link | Формирование навигационной ссылки по типу + ссылке |
development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.