# Подготовка данных

Для работы Graph Metadata Search необходима выгрузка из Конфигуратора. Для базовых возможностей достаточно отчёта из конфигурации. Для расширенных функций (BSL-граф, формы, подписки, роли) нужна также выгрузка конфигурации в файлы.

## Необходимые выгрузки

| Выгрузка              | Назначение                                                         | Обязательность |
| --------------------- | ------------------------------------------------------------------ | -------------- |
| Отчёт из конфигурации | Метаданные объектов, реквизиты, табличные части                    | Обязательно    |
| Выгрузка в файлы      | BSL-код, структура форм, подписки, роли, предопределённые, справка | Опционально    |

## Шаг 1: Создание папок

```powershell
New-Item -ItemType Directory -Force -Path @(
    "E:\1C_Export\Report",
    "E:\1C_Export\Files"
)
```

## Шаг 2: Отчёт из конфигурации

1. Откройте конфигурацию в Конфигураторе
2. Меню **Конфигурация** → **Отчёт из конфигурации**
3. Включите все разделы
4. Сохраните в папку `E:\1C_Export\Report`

## Шаг 3: Выгрузка в файлы

Требуется для: BSL-графа, структуры форм XML, подписок на события, предопределённых элементов, прав ролей, справки.

1. Меню **Конфигурация** → **Выгрузить конфигурацию в файлы**
2. Укажите папку `E:\1C_Export\Files`

{% hint style="info" %}
Без выгрузки в файлы будут работать: поиск по метаданным, business\_search, досье (без секции code), шаблонные операции по структуре и навигации. Не будут доступны: search\_code, trace\_call\_chain, структура форм XML, подписки, роли, предопределённые.
{% endhint %}

## Граф метаданных

После индексации в 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` | Подсистема содержит объект                                               |

#### BSL-граф

| Связь        | Описание                            |
| ------------ | ----------------------------------- |
| `HAS_MODULE` | MetadataObject → Module             |
| `DECLARES`   | Module → Routine                    |
| `CALLS`      | Routine → Routine (вызов процедуры) |

#### XML-данные

| Связь                | Описание                                       |
| -------------------- | ---------------------------------------------- |
| `HAS_PREDEFINED`     | MetadataObject → PredefinedItem                |
| `HAS_CHILD`          | PredefinedItem → PredefinedItem (иерархия)     |
| `HAS_HANDLER`        | EventSubscription (или 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) → элемент базы |

### Визуализация графа

```
Project (корневой узел)
  └─> Configuration
        └─> MetadataCategory (Справочники, Документы, ...)
              └─> MetadataObject
                    ├─> Attribute (реквизиты)
                    ├─> TabularPart → Attribute
                    ├─> Form
                    │     ├─> FormControl → FormControl (иерархия)
                    │     ├─> FormEvent → Routine (обработчик)
                    │     ├─> FormAttribute
                    │     └─> Command
                    ├─> Command
                    ├─> Layout
                    ├─> EnumValue
                    ├─> Module → Routine → Routine (CALLS)
                    ├─> PredefinedItem → PredefinedItem (иерархия)
                    ├─> EventSubscription → Routine (обработчик)
                    ├── USED_IN ──> другой MetadataObject
                    ├── DO_MOVEMENTS_IN ──> регистр
                    └── EXTENDS ──> базовый MetadataObject
```

## Просмотр графа

После индексации откройте Neo4j Browser (`http://localhost:7474`) и выполните запрос:

```cypher
MATCH (n) RETURN n LIMIT 100
```

Полезные запросы:

```cypher
// Все категории метаданных
MATCH (c:MetadataCategory) RETURN c.name

// Связи конкретного объекта
MATCH (o:MetadataObject {name: "Контрагенты"})-[r]->(n) RETURN o, r, n

// Граф вызовов процедуры
MATCH path = (r:Routine {name: "ПередЗаписью"})-[:CALLS*1..3]->(callee)
RETURN path

// Объекты расширения
MATCH (o:MetadataObject {origin: "extension"}) RETURN o.name, o.extension_name
```

## Обновление данных

При изменении конфигурации:

1. Повторите выгрузку
2. Установите `RESET_DATABASE=true` в docker-compose.yml
3. Перезапустите сервисы

```powershell
docker-compose down
docker-compose up -d
```

{% hint style="warning" %}
При смене embedding-модели также необходимо установить `RESET_DATABASE=true`. Система обнаружит несоответствие модели и не запустится без сброса.
{% endhint %}

## Мультипроект

Система поддерживает несколько конфигураций в одной базе Neo4j. Каждая конфигурация идентифицируется через `PROJECT_NAME`. При поиске результаты автоматически фильтруются по текущему проекту.

При `FULL_METADATA_RELOAD=true` удаляются только данные текущего проекта, данные других проектов не затрагиваются.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onerpa.ru/mcp-servery-1c/servery/graph-metadata-search/podgotovka-dannyh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
