# Модели данных (EnityModel)

В данной главе описаны базовые понятие что такое модель данных, структура модели и принцип работы с ними через API.
Модель данных может использоваться:

во внешних приложениях, как основной источник данных;
в системе синхронизации, как источник данных для описания объектов;
при формировании выходных документов, как источник данных для шаблонов.


# Создание модели данных

**Модель данных** представляет собой описание объекта предметной области, которого можно представить в виде структуры в формате JSON. Все узлы структуры должны быть названы латинскими буквами, слова без пробелом в нижнем регистре.

Для создания новой **модели данных** перейдите в раздел разработчика в проекте [Сервисы ТПУ](https://service2.tpu.ru/entity-model/index.html)

<p class="callout info">Вы видите только модели данных, которые вы создали (авторы) или с вами поделились другие разработчики.</p>

В правом верхнем углу нажмите кнопку "Добавить" и заполните все основные поля.

<table border="1" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%9D%D0%B0" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 30.4964%;"></col><col style="width: 69.4639%;"></col></colgroup><thead><tr><td>**Параметр**</td><td>**Значение**</td></tr></thead><tbody><tr><td>**Название**</td><td>Краткое название модели данных</td></tr><tr><td>**Алиас**</td><td>Уникальный алиас модели, будет использовать в API и в синхронизации</td></tr><tr><td>**Описание**</td><td>Полное описание модели данных</td></tr><tr><td>**Вид доступа к модели данных**</td><td>Уровень доступа

1. Всем
2. Только пользователям (требуется авторизация)
3. Только корпоративным пользователям (действующий студент или сотрудник)

</td></tr><tr><td>**Время жизни кеша в секундах**</td><td>Время жизни кэша сформированного объекта модели данных в памяти, для ускорения работы.

<p class="callout info">Если кэширование не требуется - значение в этом поле нужно указать 0. </p>

</td></tr><tr><td>**Приложения модели**</td><td>Перечень приложений, которые могут обращаться к указанной модели данных.

<p class="callout info">Каждое приложение должно передавать свой [публичный ключ доступа](https://devdocs.tpu.ru/books/prilozeniia-tpu/page/kliuc-dostupa "Ключ доступа").</p>

</td></tr><tr><td>**Источник для корневого узла**</td><td>По умолчанию для структуры модели данных создается древовидное представление с корневым элементом (root). Данное значение в дальнейшем можно будет поменять.

<p class="callout warning">У одного объекта модели данных может быть только один корневой элемент.</p>

</td></tr></tbody></table>

В качестве источников данных для узлов структуры могут быть использованы только [3 типа динамических источников данных](https://devdocs.tpu.ru/books/innovacionnye-razrabotki/chapter/dinamiceskie-istocniki-dannyx-did "Динамические источники данных (DID)").

1. Кортеж
2. Массив
3. Список

Редактирование описания структуры модели данных осуществляется через контекстное меню в режиме редактирования. Для добавления / редактирование / удаления узлов - требуется воспользоваться соответствующими элементами меню.

[![image.png](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/scaled-1680-/XF7image.png)](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/XF7image.png)

При редактировании узла требуется указать алиас (должен быть обязательно совместим со стандартом JSON) и [источник данных](https://devdocs.tpu.ru/books/innovacionnye-razrabotki/chapter/dinamiceskie-istocniki-dannyx-did "Динамические источники данных (DID)") (должен быть подготовлен заранее)

[![image.png](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/scaled-1680-/Yp0image.png)](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/Yp0image.png)

Для связи дочерних элементов с родительскими требуется указать хотя бы один внешний ключ, пересечение может быть организовано по составному ключу.

[![image.png](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/scaled-1680-/btYimage.png)](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/btYimage.png)

<p class="callout info">Для оперативной корректировки источника данных в контекстном меню есть ссылка на переход в режим редактирование. Источник данных можно редактировать, если вы его автор или с вами поделились доступом.</p>

# Предварительный просмотр

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

Предварительный просмотр формирует 3 различных описания.

1\. Структура (тут представлены все экспортируемые поля с указанием типа данных)

[![image.png](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/scaled-1680-/qRCimage.png)](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/qRCimage.png)

2\. Комментарии (в этом режиме все поля содержат описательную часть, комментарий к назначению данного поля)

[![image.png](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/scaled-1680-/Ul2image.png)](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/Ul2image.png)

3\. Пример (Загруженный объект по умолчанию из базы, с реальными значениями)

[![image.png](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/scaled-1680-/EdMimage.png)](https://devdocs.tpu.ru/uploads/images/gallery/2025-11/EdMimage.png)

После проверки модели данных, её можно использовать через API интеграцию или получать данные через сервер Синхронизации, а так же использовать как источник данных при формировании документов для СОУД.

по API можно запросить:

1. список объектов
2. один объект по первичному ключу

Через сервер синхронизации:

1. при изменении свойств объект - будет вызван API во внешней системе, куда будет передан один объект или список объектов.

При создании шаблона документа можно указать модель данных, как основной источник данных при формировании документа в формате PDF (шаблон может быть в формате Word или LaTeX).

# Работа с моделью данных через API

С моделями данных можно работать через API только на чтение.

Для получения списка доступных моделей данных, необходимо вызвать следующий метод API, указав [публичный ключ приложения](https://devdocs.tpu.ru/books/prilozeniia-tpu/page/kliuc-dostupa "Ключ доступа").

<p class="callout info">https:://api.tpu.ru/v2/entity</p>

Для получения[ структуры/описания модели данных](https://devdocs.tpu.ru/books/innovacionnye-razrabotki/chapter/modeli-dannyx-enitymodel "Модели данных (EnityModel)") можно использовать следующие методы API.

<p class="callout info">[https://api.tpu.ru/v2/entity/structure/&lt;id&gt;](https://api.tpu.ru/v2/entity/structure/%7Bid%7D)</p>

Для получения возможного списка параметров, которые можно использовать в модели данных (*данный список может быть пуст*)

<p class="callout info">https://api.tpu.ru/v2/entity/parametr/&lt;id&gt;</p>

Для получения возможных фильтров, которые используются при работе с корневым элементом модели данных.

<p class="callout info">https:://api.tpu.ru/v2/entity/filter/&lt;id&gt;</p>

<p class="callout warning">Фильтры доступны только при работе с моделями данных организованных на источниках данных [типа массив](https://devdocs.tpu.ru/books/innovacionnye-razrabotki/chapter/dinamiceskie-istocniki-dannyx-did "Динамические источники данных (DID)").</p>

Сортировка выборки данных

<p class="callout info">sort=\[direction\]\[column\]</p>

Для обратной сортировки добавьте минус перед названием столбца

  
Пример:

```
?sort=title,-created
```

Фильтрация выборки данных:

<p class="callout info">filter\[type\]\[op\]=value</p>

Допустимые сравнения:

<table border="1" id="bkmrk-%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80-%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%9E" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 14.6545%;"></col><col style="width: 16.5889%;"></col><col style="width: 68.836%;"></col></colgroup><thead><tr><td>**Оператор**</td><td>Сравнение</td><td>Описание</td></tr></thead><tbody><tr><td>**eq**</td><td>equal (=)</td><td>Эквивалентно (равно) указанному значению</td></tr><tr><td>**like**</td><td>text search</td><td>Поиск по тексту</td></tr><tr><td>**gte**</td><td>&gt;=</td><td>Больше и равно</td></tr><tr><td>**lte**</td><td>&lt;=</td><td>Меньше и равно</td></tr><tr><td>**gt**</td><td>&gt;</td><td>Больше</td></tr><tr><td>**lt**</td><td>&lt;</td><td>Меньше</td></tr></tbody></table>

Пример:

```
?filter[created][eq]=2019-07-16
```

Все параметры можно комбинировать

# Модель данных для печати бланков