Graph Metadata Search

Графовый поиск по метаданным конфигурации 1С через Neo4j.

Назначение

Graph Metadata Search строит граф связей метаданных вашей конфигурации 1С. ИИ начинает понимать, как объекты связаны между собой, а не просто видит их названия. Сервер поддерживает анализ BSL-кода, структуры форм, расширений, подписок на события, прав ролей и предопределённых элементов.

Возможности

ИИ получает инструменты для:

  • Анализа связей документов, регистров, справочников

  • Нахождения зависимостей и анализа влияния изменений (trace_impact)

  • Навигации по графу вызовов BSL-процедур (trace_call_chain)

  • Получения полного досье объекта за один вызов (get_object_dossier)

  • Поиска по описаниям, синонимам и справке объектов (search_metadata_by_description)

  • Семантического и полнотекстового поиска по BSL-коду на уровне процедур

  • Сравнения базовой конфигурации и расширения (compare_base_and_extension)

  • Работы со структурой управляемых форм (элементы, события, привязки)

  • Шаблонных запросов без LLM — мгновенные детерминированные ответы

Примеры использования

  • "Какие регистры использует документ Реализация?"

  • "Покажи все объекты, связанные со справочником Контрагенты"

  • "Какая структура модуля документа Заказ?"

  • "Какие формы есть у справочника Номенклатура?"

  • "Покажи полное досье справочника Контрагенты"

  • "Кто вызывает процедуру ПроверитьЗаполнение?"

  • "Какое влияние окажет изменение справочника Номенклатура?"

  • "Что изменило расширение МоёРасширение в справочнике Контрагенты?"

  • "Найди все неиспользуемые процедуры в документе Реализация"

  • "Какие роли имеют доступ к справочнику Контрагенты?"

Особенности

  • Использует Neo4j для хранения графа

  • Понимает связи между объектами (USED_IN, DO_MOVEMENTS_IN, CALLS, EXTENDS, OVERRIDES)

  • Особенно полезен для больших/чужих конфигураций

  • Требует docker-compose для запуска

  • Поддерживает шаблонный режим — работа без LLM через JSON-запросы

  • Поддерживает расширения конфигурации и сравнение с базой

  • Фоновая индексация — сервер доступен сразу, обогащение данных выполняется в фоне

  • Веб-интерфейс Neo4j Browser для визуализации графа: http://localhost:7474

  • Веб-интерфейс поиска: http://localhost:8006/search

  • OpenAPI документация: http://localhost:8006/docs

Доступные инструменты MCP

ИИ получает следующие инструменты:

Инструмент
Описание

search_metadata

Структурный поиск объектов метаданных через Cypher или JSON-шаблоны

search_metadata_by_description

Поиск объектов метаданных по описанию, синониму, справке (полнотекстовый + семантический)

get_metadata_prompt

Получение схемы БД Neo4j, примеров Cypher и списка шаблонных операций

execute_metadata_cypher

Прямое выполнение Cypher-запросов к Neo4j

find_objects_using_object

Объекты, использующие данный как тип (через USED_IN)

find_usages_of_object

Конкретные реквизиты/измерения/ресурсы, ссылающиеся на объект

find_register_movement_docs

Документы, делающие движения в указанный регистр

search_code

Поиск по BSL-коду процедур/функций (полнотекстовый, семантический, гибридный) с уровнями детализации

business_search

Семантический поиск по бизнес-описаниям с обогащением граф-контекстом

answer_metadata_question

RAG-ответы на аналитические вопросы о метаданных (требует LLM)

get_object_dossier

Полное досье объекта: структура, формы, подписки, роли, зависимости, код

trace_impact

Анализ влияния — рекурсивный обход зависимостей объекта

trace_call_chain

Анализ цепочки вызовов BSL-процедур в обоих направлениях

find_by_guid

Поиск узла метаданных по GUID-идентификатору

resolve_qualified_name

Резолв квалифицированного имени (например, Справочник.Контрагенты.Реквизит.ИНН)

compare_base_and_extension

Сравнение объекта базовой конфигурации и расширения

search_metadata

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

Поддерживает два формата запросов:

  1. JSON-шаблон (предпочтительный — мгновенный, детерминированный, без LLM): {"operation": "list_attributes", "object_name": "Контрагенты"}

  2. Структурный текст — LLM генерирует Cypher-запрос (требует OpenAI API).

Параметр
Тип
По умолчанию
Описание

query

string

JSON-шаблон или структурный запрос на естественном языке

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

Возврат: Результаты Cypher-запроса или шаблонной операции в текстовом формате.

Этот инструмент предназначен для СТРУКТУРНЫХ запросов — когда известны имена объектов, категории или типы связей. Для поиска по смыслу используйте business_search или search_metadata_by_description.

search_metadata_by_description

Поиск объектов метаданных 1С по описательным полям: имя, Синоним, Комментарий, Описание, справка (help_text). Поддерживает полнотекстовый и гибридный (fulltext + vector) режимы.

Параметр
Тип
По умолчанию
Описание

query

string

Описание искомых объектов на естественном языке. Поддерживается синтаксис Lucene: AND, OR, "точная фраза", подстановка*

top_k

int

10

Максимальное количество результатов

filter_type

string

Фильтр по категории метаданных (например, Справочники, Документы)

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

use_fuzzy

bool

false

Нечёткий поиск — полезен при возможных опечатках или неточном написании

alpha

float

0.5

Баланс fulltext / vector при гибридном режиме (1.0 = только fulltext, 0.0 = только vector)

Возврат: Ранжированные результаты с именем, категорией, score и отрывком из описания.

При ENABLE_METADATA_DESCRIPTION_EMBEDDING=true автоматически включается гибридный режим (fulltext + vector) для более точного ранжирования.

get_metadata_prompt

Возвращает описание схемы базы данных Neo4j и примеры Cypher-запросов. При включённом шаблонном режиме (TEMPLATE_MODE_ENABLED=true) также возвращает список всех доступных шаблонных операций с параметрами и примерами JSON.

Параметры отсутствуют.

Возврат: Строка со схемой БД, примерами запросов и (опционально) описанием шаблонных операций.

execute_metadata_cypher

Прямое выполнение Cypher-запроса к базе метаданных Neo4j. Используйте схему из get_metadata_prompt для построения запросов.

Параметр
Тип
По умолчанию
Описание

query

string

Cypher-запрос для выполнения

Возврат: Результаты запроса в JSON-формате.

find_objects_using_object

Поиск всех объектов метаданных, в которых указанный объект используется как ссылочный тип (через связь USED_IN). Отвечает на вопрос «Где используется справочник Контрагенты?».

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта без префикса категории (Контрагенты, а не Справочник.Контрагенты)

project_name

string

Фильтр по имени конфигурации

Возврат: Список объектов, ссылающихся на указанный.

find_usages_of_object

Поиск конкретных реквизитов, измерений и ресурсов, в которых указанный объект используется как тип. Более детальная версия find_objects_using_object — показывает каждый отдельный реквизит с владельцем и типом.

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта без префикса категории

project_name

string

Фильтр по имени конфигурации

Возврат: Список реквизитов/измерений/ресурсов с указанием объекта-владельца и типа.

find_register_movement_docs

Поиск всех документов, делающих движения (проводки) в указанный регистр. Отвечает на вопрос «Какие документы делают движения по регистру Продажи?».

Параметр
Тип
По умолчанию
Описание

register_name

string

Имя регистра без префикса категории (Продажи, а не РегистрНакопления.Продажи)

project_name

string

Фильтр по имени конфигурации

Возврат: Список документов с указанием категории.

search_code

Поиск по BSL-коду процедур и функций. Работает на уровне отдельных Routine-нод (при загруженном BSL-графе) или на уровне MetadataObject.program_code (fallback). В гибридном режиме используется Reciprocal Rank Fusion (RRF, k=60) для объединения результатов.

Параметр
Тип
По умолчанию
Описание

query

string

Имя функции, ключевое слово или описание на естественном языке

search_type

string

hybrid

Тип поиска: fulltext, semantic, hybrid

top_k

int

3

Максимальное количество результатов на каждый тип поиска

filter_type

string

Фильтр по категории метаданных

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

detail_level

string

L1

Уровень детализации результатов: L0, L1, L2, L3

Уровни детализации:

Уровень
Содержимое

L0

Полный код процедуры без обрезки

L1

Сигнатура + описание + первые 5 вызовов (по умолчанию)

L2

Краткая карточка: имя, владелец, тип модуля, export-флаг, директива

L3

Только имя и score (минимальный расход токенов)

Примеры:

  • search_code("ПроверитьЗаполнение") — поиск по имени функции

  • search_code("расчет скидки", search_type="semantic") — поиск по назначению

  • search_code("Процедура AND Скидк*", search_type="fulltext") — синтаксис Lucene

  • search_code("расчет", detail_level="L3", top_k=20) — максимум результатов, минимум токенов

Семантический поиск объектов метаданных по описанию бизнес-функциональности. Результаты автоматически обогащаются граф-контекстом: реквизиты, табличные части, формы, связи.

Параметр
Тип
По умолчанию
Описание

query

string

Описание искомой функциональности на естественном языке

top_k

int

10

Максимальное количество результатов

filter_type

string

Фильтр по категории метаданных

include_structure

bool

true

Обогащать результаты граф-контекстом (реквизиты, ТЧ, формы, USED_IN)

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

Возврат: Ранжированные результаты с оценками релевантности, бизнес-контекстом и структурой объекта.

Требует включения ENABLE_BUSINESS_SEARCH в конфигурации. При include_structure=false возвращается плоский результат без граф-контекста. При недоступности векторного индекса автоматически переключается на полнотекстовый поиск.

answer_metadata_question

Ответы на сложные аналитические вопросы о метаданных 1С с использованием RAG (Retrieval-Augmented Generation). Собирает контекст из графа Neo4j и кода, затем генерирует ответ через LLM.

Используйте этот инструмент, когда вопрос требует РАССУЖДЕНИЯ или АНАЛИЗА нескольких объектов, а не простого поиска. Для простых запросов используйте специализированные инструменты: get_object_dossier, search_metadata, business_search, search_code, trace_impact.

Параметр
Тип
По умолчанию
Описание

question

string

Аналитический вопрос о метаданных на русском языке. Чем конкретнее — тем лучше

max_tokens

int

4000

Максимальное количество токенов для ответа LLM

include_code

bool

true

Включать фрагменты кода в контекст

project_name

string

Фильтр по имени конфигурации

Возврат: Структурированный ответ с источниками, количеством использованных токенов и оценкой уверенности.

Примеры:

  • answer_metadata_question(question="Как реализован механизм скидок?")

  • answer_metadata_question(question="Какие объекты участвуют в процессе закупки и как они связаны?")

Требует настроенного LLM (OPENAI_API_KEY).

get_object_dossier

Полное досье объекта метаданных — структурированный паспорт со всеми фактическими данными из графа за один вызов, без LLM.

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта метаданных

sections

list

все

Список секций: structure, forms, subscriptions, roles, dependencies, code, business_info

Секции досье:

Секция
Содержимое

structure

Реквизиты, табличные части, измерения, ресурсы, команды, макеты

forms

Список форм с указанием форм по умолчанию

subscriptions

Подписки на события, источником которых является объект

roles

Роли с правами доступа к объекту

dependencies

Зависимости USED_IN (upstream/downstream) и движения регистров

code

Перечень модулей и процедур (имена и сигнатуры, без тел)

business_info

AI-описание бизнес-функциональности (если доступно)

Возврат: Структурированный текст с заголовками секций и фактами из графа.

trace_impact

Анализ влияния — рекурсивный обход зависимостей объекта по связям USED_IN, DO_MOVEMENTS_IN и CALLS.

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта метаданных

depth

int

3

Глубина обхода (максимум 5)

direction

string

downstream

Направление: downstream (кто зависит), upstream (от чего зависит), both

relationship_types

list

все

Фильтр типов связей: USED_IN, DO_MOVEMENTS_IN, CALLS

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

Возврат: Список зависимых объектов с указанием глубины, типа связи, категории и промежуточного объекта. Результат усекается до 500 записей.

Примеры:

  • trace_impact(object_name="Контрагенты") — все downstream-зависимости на глубину 3

  • trace_impact(object_name="Продажи", direction="upstream") — от чего зависит регистр

  • trace_impact(object_name="Контрагенты", relationship_types=["USED_IN"]) — только ссылочные зависимости

trace_call_chain

Анализ цепочки вызовов BSL-процедур — рекурсивный обход графа вызовов в обоих направлениях.

Параметр
Тип
По умолчанию
Описание

routine_name

string

Имя процедуры/функции

object_name

string

Имя объекта-владельца (для устранения неоднозначности)

direction

string

callees

Направление: callees (кого вызывает), callers (кто вызывает)

depth

int

3

Глубина обхода (максимум 10)

Возврат: Дерево вызовов с обогащёнными данными: имя процедуры, объект-владелец, тип модуля, директива, сигнатура, export-флаг, глубина. Результат усекается до 200 записей.

Требует загруженного BSL-графа (LOAD_BSL_SIGNATURES=true и CODE_EXPORT_PATH).

find_by_guid

Поиск любого узла метаданных по его GUID-идентификатору. Возвращает тип узла, имя и свойства.

Параметр
Тип
По умолчанию
Описание

guid

string

GUID для поиска (например, 8f1c2d34-5678-4abc-9def-0123456789ab)

Возврат: Информация о найденном узле или сообщение об ошибке.

resolve_qualified_name

Резолв полного квалифицированного имени 1С-метаданных в соответствующий узел графа. Поддерживает паттерны: Справочник.Контрагенты, Справочник.Контрагенты.Реквизит.ОсновнойМенеджер, Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.

Параметр
Тип
По умолчанию
Описание

qualified_name

string

Точечное квалифицированное имя (например, Справочник.Контрагенты.Реквизит.ИНН)

Возврат: Информация о резолвленном узле.

compare_base_and_extension

Структурное сравнение объекта базовой конфигурации и его расширения: что добавлено, что переопределено, что осталось из базы.

Параметр
Тип
Описание

object_name

string

Имя объекта метаданных

extension_name

string

Имя расширения

Возврат: Детальное сравнение по секциям — реквизиты, формы, процедуры — с указанием статуса каждого элемента (из базы / переопределён / добавлен расширением).

Требует предварительной загрузки и базовой конфигурации, и расширения (через EXTENSION_NAME и EXTENSION_BASE_PROJECT).

Шаблонные операции (Template Mode)

При включённом шаблонном режиме (TEMPLATE_MODE_ENABLED=true) инструмент search_metadata принимает JSON-запросы вида {"operation": "...", ...} и возвращает мгновенные детерминированные ответы без LLM.

Режимы работы

Режим
Переменные
Поведение

Template Only

TEMPLATE_MODE_ENABLED=true, TEMPLATE_MODE_ONLY=true

Только JSON-запросы, LLM не используется

Combined

TEMPLATE_MODE_ENABLED=true, TEMPLATE_MODE_ONLY=false

JSON → шаблон, текст → LLM, fallback LLM при пустом результате

LLM Only

TEMPLATE_MODE_ENABLED=false

Только LLM (поведение по умолчанию)

Доступные операции

Структура объектов

Операция
Параметры
Описание

list_attributes

object_name

Реквизиты объекта с типами

list_tabular_parts

object_name

Табличные части с их реквизитами

object_structure

object_name

Полная структура: реквизиты, ТЧ, формы, измерения, ресурсы, значения перечислений

list_forms

object_name

Формы объекта

list_enum_values

object_name

Значения перечисления

list_resources

object_name

Ресурсы регистра

list_dimensions

object_name

Измерения регистра

list_commands

object_name

Команды объекта

list_layouts

object_name

Макеты объекта

Операция
Параметры
Описание

list_objects_by_category

category_name

Все объекты указанной категории

list_objects_by_name

name_pattern

Поиск объектов по подстроке имени

find_by_guid

guid

Поиск узла по GUID

resolve_qn

qualified_name

Резолв квалифицированного имени (например, Справочник.Контрагенты.Реквизит.ИНН)

Типы данных

Операция
Параметры
Описание

get_attribute_type

object_name, attribute_name

Тип указанного реквизита

list_attributes_with_type

type_pattern

Все реквизиты с указанным типом

Связи и зависимости

Операция
Параметры
Описание

find_objects_using_object

object_name

Объекты, использующие данный как тип

find_usages_of_object

object_name

Конкретные реквизиты/ресурсы/измерения, ссылающиеся на объект

find_documents_making_movements_into_register

register_name

Документы, делающие движения в регистр

trace_impact

object_name, depth, direction

Рекурсивный анализ зависимостей

trace_call_chain

routine_name, object_name, direction, depth

Цепочка вызовов BSL-процедур

HTTP-сервисы

Операция
Параметры
Описание

list_http_services

Все HTTP-сервисы конфигурации

list_url_templates_of_service

service_name

Шаблоны URL указанного HTTP-сервиса

list_url_methods_of_template

service_name, template_name

Методы (GET, POST, ...) указанного шаблона

Подписки на события

Операция
Параметры
Описание

list_event_subscriptions

Все подписки на события в конфигурации

list_event_subscriptions_of_object

object_name

Подписки, в которых объект является источником

Предопределённые элементы

Операция
Параметры
Описание

list_predefined_of_object

object_name

Предопределённые элементы объекта с иерархией

find_predefined_by_flag

object_name, flag_name, flag_value

Поиск предопределённых по значению свойства

Права доступа

Операция
Параметры
Описание

list_roles_with_access_to_target

target_name

Роли с доступом к объекту

list_access_targets_of_role

role_name

Объекты, к которым имеет доступ роль

get_access_of_role_to_target

role_name, target_name

Детальные права роли к объекту

Структура форм (XML)

Операция
Параметры
Описание

list_form_controls

object_name, form_name

Элементы управления формы с иерархией

list_form_events

object_name, form_name

События формы и её элементов

list_form_commands

object_name, form_name

Команды формы

list_form_bindings

object_name, form_name

Привязки элементов к данным и командам

list_form_event_handlers

object_name, form_name

Пары (событие → обработчик Routine)

get_default_forms

object_name

Формы по умолчанию (элемента, списка, выбора)

BSL-код

Операция
Параметры
Описание

get_routine_body

routine_name, owner_name

Полное тело процедуры с сигнатурой и описанием

list_callers_of_routine

routine_name, owner_name

Кто вызывает указанную процедуру

list_callees_of_routine

routine_name, owner_name

Кого вызывает указанная процедура

call_graph_subtree

routine_name, owner_name, depth, direction

Поддерево вызовов на указанную глубину

find_unused_routines

owner_name

Неиспользуемые процедуры объекта

list_exported_routines

owner_name

Экспортные методы объекта

Расширения

Операция
Параметры
Описание

find_base_object

object_name, extension_name

Базовый объект, на который указывает EXTENDS

list_overrides_of_object

object_name, extension_name

Список переопределённых элементов (формы, модули, процедуры)

list_extension_objects

extension_name, extends_type

Все объекты расширения с типом (added/modified)

Досье

Операция
Параметры
Описание

get_object_dossier

object_name, sections

Полное досье объекта (аналогично MCP-инструменту)

Пример JSON-запроса

Веб-интерфейсы

Neo4j Browser

Логин: neo4j Пароль: указанный в NEO4J_PASSWORD (по умолчанию password123)

В Neo4j Browser можно:

  • Визуализировать граф метаданных

  • Выполнять Cypher-запросы

  • Исследовать связи между объектами

Интерфейс поиска

Простой веб-интерфейс для поиска по метаданным без использования Cursor.

OpenAPI документация

Автогенерируемая документация FastAPI с описанием HTTP-эндпоинтов.

Требования

  • Docker Desktop с WSL2

  • Лицензионный ключ

  • Embedding модель (LM Studio или CPU)

  • Выгрузка конфигурации из Конфигуратора (отчёт + опционально файлы)

  • ~2 ГБ RAM для Neo4j

Для расширенных функций:

  • XML-выгрузка конфигурации в файлы — для BSL-графа, форм, подписок, ролей, предопределённых

  • OpenAI-совместимый LLM — для режима Combined (LLM fallback) и генерации бизнес-описаний

Порт

8006 (MCP сервер) 7474 (Neo4j Browser) 7687 (Neo4j Bolt)

Образ Docker

Архитектура

Быстрый старт

Используйте docker-compose для запуска обоих сервисов.

Подробнее: Установка

Конфигурация Cursor

Структура раздела

Last updated