# Компиляция метаданных

В процессе работы с конфигуратором, "компиляция" это то что будет выскакивать на экране чаще всего. Компиляция это процесс валидации метаданных и подготовка этих метаданных к использованию. Когда мы редактируем объект и затем сохраняем его, сразу запускается процесс компиляции этого объекта и всех его дочерних объектов (см. [наследование](https://www.notion.so/azimut/8be961b257ba4f28bb9b2c94e03dc402)).

![](/files/-LnTIZj8TpAqU5jPagLR)

Во время компиляции происходит слияние всех родительских метаданных с метаданными компилируемого объекта. Это необходимо для обеспечения возможности наследования.

Например у нас есть Представление "Заявка". В нем есть поля "ID", "Number". У этого представления есть дочернее представление "Заявка на вызов курьера", с одним единственным полем "Курьер". Поля ID, Number в дочернем представлении мы уже не описываем, так как они унаследуются от базовой заявки.

Вот компиляция объекта "Заявка на вызов курьера" как раз и достает все родительские метаданные вверх по иерархии, склеивает их с метаданными самого объекта и складывает в готовом к употреблению виде в базу. Поэтому когда мы меняем объект у которого есть дочерние, то процесс компиляции также пересобирает и их. Например если мы в базовом представлении переименовали поле Name с "Наименование" на "Имя", то нужно перекомпилировать не только базовую заявку, но и Заявку на вызов курьера. Все это конечно происходит автоматически и не требует внимания разработчика.

Затем, когда мы запускаем приложение, при использовании того или иного объекта (например "Главная форма приложения" или тот же пример "Заявка на вызов курьера"), система подтягивает эти метаданные и инициализирует ими данный объект. За счет того что как правило в средне-статистической системе объектов очень много (а иначе зачем вам платформа), то и обращений к базе происходило бы достаточно большое кол-во. А процесс компиляции собирает и оптимально раскладывает по полкам все необходимые метаданные для быстрой работы runtime. Разработчик же заботится об удобстве расположения полей, правильной логике и обо всем, чему в традиционной разработке из-за большой рутины не уделяют должного внимания.


---

# 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://projects.itproduct.ru/azimut/koncepciya/kompilyaciya-metadannykh.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.
