> For the complete documentation index, see [llms.txt](https://projects.itproduct.ru/azimut/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://projects.itproduct.ru/azimut/koncepciya/kompilyaciya-metadannykh.md).

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

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

![](/files/-LnTIZj8TpAqU5jPagLR)

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

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

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

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