Подготовка данных
Для работы Graph Metadata Search нужен хотя бы один источник метаданных. Рекомендуемый вариант — Designer XML-выгрузка из Конфигуратора: по ней сервер строит BSL-граф и доменные связи, а при отсутствии текстового отчёта автоматически синтезирует совместимый отчёт для базового контура метаданных.
Необходимые выгрузки
Designer XML-выгрузка в файлы
Метаданные, BSL-код, структура форм, подписки, роли, предопределённые, справка; из неё может быть синтезирован текстовый отчёт
Рекомендуется, достаточна сама по себе
Отчёт из конфигурации
Готовый источник базовых метаданных; сохраняется для совместимости и обязателен только при METADATA_SOURCE=report
Опционально
Проект 1C:EDT
Альтернативный источник метаданных, кода и структуры: базовые метаданные читаются из .mdo при METADATA_SOURCE=auto (если нет Designer-выгрузки) либо при METADATA_SOURCE=edt. Лежащий рядом *.txt выгрузку больше не перекрывает. Синтез отчёта из EDT не поддерживается — METADATA_SOURCE=xml на EDT-корне отклоняется с unsupported_by_edt
Опционально, отдельный отчёт не нужен
Шаг 1: Создание папок
New-Item -ItemType Directory -Force -Path @(
"E:\1C_Export\Files",
"E:\bases\graph_generated_report"
)Шаг 2: Выгрузка в файлы
Это основной источник для BSL-графа, структуры форм XML, подписок на события, предопределённых элементов, прав ролей и справки. При METADATA_SOURCE=auto он же источник базовых метаданных: лежащий рядом *.txt его больше не перекрывает.
Меню Конфигурация → Выгрузить конфигурацию в файлы
Укажите папку
E:\1C_Export\Files
Шаг 3: Необязательный готовый отчёт
Если политика установки требует использовать именно готовый отчёт, выполните Конфигурация → Отчёт из конфигурации, включите все разделы и сохраните *.txt в отдельный каталог. Задайте METADATA_SOURCE=report. При auto выгрузка старше отчёта; при xml отчёт намеренно игнорируется.
Граф метаданных
После индексации в Neo4j создаётся граф с разветвлённой структурой.
Типы узлов
Базовые узлы (из готового или синтезированного отчёта)
Project
Корневой узел, идентификация проекта
Configuration
Конфигурация
MetadataCategory
Категория метаданных (Справочники, Документы, ...)
MetadataObject
Объект метаданных
Attribute
Реквизит объекта
TabularPart
Табличная часть объекта
Form
Форма объекта
EnumValue
Значение перечисления
Command
Команда объекта
Layout
Макет объекта
Специализированные узлы (из готового или синтезированного отчёта)
UrlTemplate
Шаблон URL HTTP-сервиса
UrlMethod
Метод URL-шаблона (GET, POST, ...)
Characteristic
Характеристика плана видов характеристик
JournalGraph
Граф журнала документов
AccountingFlag
Признак учёта плана счетов
DimensionAccountingFlag
Признак учёта субконто
BSL-граф (из выгрузки в файлы, LOAD_BSL_SIGNATURES=true)
Module
Модуль объекта (ObjectModule, ManagerModule, FormModule, CommonModule, ...)
Routine
Процедура или функция BSL-кода
XML-данные (из выгрузки в файлы)
EventSubscription
Подписка на событие
LOAD_EVENT_SUBSCRIPTIONS=true
PredefinedItem
Предопределённый элемент
LOAD_PREDEFINED_VALUES=true
FormControl
Элемент управления формы
LOAD_FORMS_FROM_XML=true
FormEvent
Событие формы или элемента
LOAD_FORMS_FROM_XML=true
FormAttribute
Реквизит формы
LOAD_FORMS_FROM_XML=true
Системные узлы
SystemMeta
Системная информация (embedding_model_id, timestamps)
Связи
Иерархия
HAS_CONFIGURATION
Project → Configuration
HAS_CATEGORY
Configuration → MetadataCategory
HAS_OBJECT
MetadataCategory → MetadataObject
HAS_ATTRIBUTE
MetadataObject (или TabularPart) → Attribute
HAS_TABULAR_PART
MetadataObject → TabularPart
HAS_FORM
MetadataObject → Form
HAS_VALUE
MetadataObject (Перечисление) → EnumValue
HAS_COMMAND
MetadataObject (или Form) → Command
HAS_LAYOUT
MetadataObject → Layout
HAS_URL_TEMPLATE
MetadataObject (HTTP-сервис) → UrlTemplate
HAS_URL_METHOD
UrlTemplate → UrlMethod
HAS_CHARACTERISTIC
MetadataObject → Characteristic
HAS_GRAPH
MetadataObject → JournalGraph
HAS_ACCOUNTING_FLAG
MetadataObject → AccountingFlag
HAS_DIMENSION_ACCOUNTING_FLAG
MetadataObject → DimensionAccountingFlag
Перекрёстные связи объектов
USED_IN
Объект используется как тип реквизита/ресурса/измерения в другом объекте
DO_MOVEMENTS_IN
Документ делает движения в регистр
CONTAINS_OBJECT
Подсистема содержит объект
При LOAD_FORMS_FROM_XML=true и LOAD_BSL_SIGNATURES=true загрузка управляемых форм ждёт завершения загрузки BSL-графа: обработчики должны существовать до создания связей HAS_HANDLER. После установки сборки, содержащей это исправление, ранее загруженные формы однократно перечитываются из XML для восстановления пропущенных связей. Повторный запуск использует обычный resume.
BSL-граф
HAS_MODULE
MetadataObject → Module
DECLARES
Module → Routine
CALLS
Routine → Routine (вызов процедуры)
XML-данные
HAS_PREDEFINED
MetadataObject → PredefinedItem
HAS_CHILD
PredefinedItem → PredefinedItem (иерархия)
HAS_HANDLER
EventSubscription → Routine общего модуля из свойства handler (или FormEvent → Routine)
HAS_CONTROL
Form → FormControl
HAS_CHILD
FormControl → FormControl (иерархия элементов)
HAS_EVENT
Form (или FormControl) → FormEvent
HAS_FORM_ATTRIBUTE
Form → FormAttribute
BINDS_TO
FormControl → цель привязки данных
LINKS_TO_COMMAND
FormControl → Command
GRANTS_ACCESS_TO
Role → MetadataObject (с деталями прав)
Расширения
EXTENDS
MetadataObject расширения → MetadataObject базы
OVERRIDES
Элемент расширения (Form, Module, Routine) → элемент базы
Визуализация графа
Просмотр графа
После индексации откройте Neo4j Browser (http://localhost:7474) и выполните запрос:
Полезные запросы:
Обновление данных
При изменении конфигурации повторите выгрузку в тот же каталог или обновите её в томе (например, git pull). Сервер применит изменения без полной пересборки — при перезапуске контейнера или при очередной сверке GRAPH_REFRESH_INTERVAL_SEC (образы от 04.10.2026):
BSL-модули сверяются по hash содержимого: новые и изменённые загружаются, удалённые удаляются.
Метаданные XML-выгрузки перечитываются, если изменился хотя бы один
*.xml, и сливаются поверх графа. При перезапуске изменение распознаётся по отпечатку выгрузки (путь, размер и время изменения каждого*.xml), сохранённому при синтезе отчёта; в журнале появляется строкаResume: the XML export changed since the report the graph was read from….Объекты, реквизиты, табличные части и их колонки, формы, команды и макеты, которых в выгрузке больше нет, удаляются из графа вместе с их описаниями.
Описания и векторы остальных объектов и векторы процедур сохраняются; нужно ли обновить описание изменённого объекта, решает
BUSINESS_INFO_UPDATE_POLICY.
Изменённые формы (Form.xml) существующих объектов перечитываются и тогда, когда их изменили при остановленном сервере: после старта сверка сравнивает выгрузку со снимком, сохранённым после последнего применённого изменения (/app/data/.ingestion/source-refresh-snapshot.json), и перечитывает только изменённые формы. Если снимка ещё нет (первый старт образа с этой функцией), выгрузка принимается как есть, без перечитывания форм. Ограничения: права ролей, предопределённые элементы, подписки на события, справка и СКД изменённых объектов не перечитываются ни перезапуском, ни сверкой. Для проекта EDT и готового отчёта .txt перезапуск метаданные не перечитывает: это делает сверка работающего сервера.
Полная пересборка нужна, если сменился сам источник (например, XML-выгрузка заменена проектом EDT) или граф должен точно совпасть с выгрузкой. Остановите сервисы, очистите или переименуйте в резерв каталог базы Neo4j и каталог состояния сервера (том /app/data) и запустите заново. Подробнее — в Полном перезапуске.
Мультипроект
Система поддерживает несколько конфигураций в одной базе Neo4j. Каждая конфигурация идентифицируется через PROJECT_NAME. При поиске результаты автоматически фильтруются по текущему проекту.
При GRAPH_SCOPE_ENFORCED=true полную пересборку одного проекта выполняет refresh_graph_project(mode="full"): проект читается из зарегистрированного configuration_root в отдельное поколение и переключается на него, данные других проектов не затрагиваются.
Last updated