Схема данных¶
Платформа TESSA разделяет описание схемы данных и типов карточек, т.е. физической структуры таблиц и их логической взаимосвязи. Тип карточки объединяет несколько указанных полей из различных таблиц, а также определяет пользовательский интерфейс карточки, т.е. то, какие поля и каким образом редактируются, и где они визуально расположены.
Ниже приведено руководство по созданию простого типа карточки “Документ” с указанием следующих полей:
- Тема документа – строка, длина не ограничена;
- Номер – число, в которое записывается порядковый номер документа;
-
Тип документа – значение из перечисления:
- Incoming (входящий);
- Outgoing (исходящий);
- Internal (внутренний);
-
Контрагент – ссылка на стандартный справочник контрагентов.
В типовом решении уже существуют карточки для работы с различными видами документов, но в рамках данного руководства создается простая карточка со своей структурой, которую можно будет модифицировать любым образом (например, добавлять в неё произвольные поля и писать расширения, реализующие любую бизнес-логику).
Important
Для упрощения процесса обновления на новые версии платформы крайне желательно все объекты схемы данных (такие как таблицы, колонки и т.п.), добавляемые и изменяемые в рамках проектного решения, сохранять в отдельной библиотеке.
Редактор схемы данных¶
Схема данных настраивается на вкладке “Схема” на панели навигации в левой части окна TessaAdmin. В дереве под узлом Таблицы расположены группы таблиц, а внутри – собственно таблицы с их колонками.

Для каждого проекта, разрабатываемого на платформе TESSA, рекомендуется придумать простой префикс, которым снабжать все объекты системы для удобства их поиска, а также для отличия от объектов, которые могут появиться в новых версиях платформы или типового решения. Для типового решения это префиксы Kr и Wf. Для объектов, созданных в рамках этого руководства, будет использоваться префикс Ab.
Первым делом необходимо создать новую библиотеку, в которую будут добавляться новые таблицы. Для этого необходимо на узле “Библиотеки” с помощью контекстного меню добавить новую библиотеку и указать новое имя, например, Ab Partition, в нее будут добавляться все новые объекты схемы данных.
Справочники можно создавать двумя способами:
- Как обычную таблицу, содержащую значения, которые явно заданы в схеме данных (т.е. Enumeration). Потребуются две колонки: идентификатор и отображаемое в UI название.
- Как множество карточек, в данном случае карточек
Тип документа, с дополнительным полем Название типа (уникальный идентификатор есть у любой карточки).
Tip
Для такого простого справочника, как Тип документа, больше подойдёт вариант с Enumeration. Если же каждое значение справочника определяется множеством полей и должно иметь пользовательский интерфейс для редактирования, то для его описания следует использовать карточки. Примером такого справочника является справочник контрагентов Partners.
Таблица с типом Перечисление¶
Для создания таблицы с типом “Перечисление” со значениями справочника типов документов необходимо выполнить следующие действия:
- В контекстном меню узла Таблицы нужно выбрать пункт Добавить таблицу. Таблица будет создана под узлом
(без группы). - Данный узел потребуется развернуть и выделить узел с таблицей.
- Заполнить для таблицы поле Название значением
AbDocument, Группа =Ab, Библиотека =Ab Partition, Используется для типа =Не указан, Тип секции =Перечисление, а также не выбирать флаг Виртуальная.
Important
В свойстве Используется для типа указано Не указан, т.е. эта таблица не используется в типах карточек.
Свойство Тип секции равно Перечисление, т.е. это таблица-перечисление (и это единственный корректный тип таблицы, которая не используется в типах карточек).
Флаг Виртуальная определяет, что эта таблица должна физически отсутствовать в базе данных, но присутствовать в схеме. Виртуальные таблицы не нужны для Перечисление, но могут быть полезны для таблиц, включённых в типы карточек, чтобы связывать контролы со схемой данных, причём данные могут устанавливаться расширениями произвольным образом.
Example
Например, это позволяет вывести в карточке сотрудника список департаментов, в которые входит сотрудник, хотя физически в БД отсутствует таблица Департаменты, в которые входит сотрудник, но присутствует таблица Сотрудники, которые включены в департамент.
Т.е. таблица Департаменты, в которые входит сотрудник присутствует в схеме данных и поэтому может быть связана с соответствующим контролом, но она отмечена как виртуальная, т.к. она должна не располагаться в БД, а заполняться расширениями при загрузке карточки сотрудника (расширение выполняет SQL-запрос, и заполняет строки виртуальной секции по данным из таблиц).
Поле Описание может содержать произвольное многострочное описание таблицы. Аналогичное поле есть и у других элементов схемы данных, т.е. описание можно добавить также для колонок, ограничений, хранимых процедур, функций и миграций.
Для добавления колонок необходимо:
- Развернуть узел с созданной таблицей.
- Вызвать контекстное меню на узле “Колонки”, затем нажать Добавить физическую колонку или Добавить комплексную колонку.
- Развернуть узел с колонками и выбрать созданную колонку.
- Проверить, что колонка создалась в необходимой библиотеке.
- Для созданной колонки указать Название, Описание, Тип, Правила сравнения строк (MS SQL Server), Правила сравнения строк (PostgreSQL), Значение по умолчанию, флаг Автонкрементная колонка, Начальное значение и Шаг.
- Нажать кнопку Сохранить все.
Example
В рамках данного руководства необходимо:
- Развернуть узел с созданной таблицей.
- Вызвать контекстное меню на узле “Колонки”, затем нажать Добавить физическую колонку.
- Развернуть узел с колонками и выбрать созданную колонку.
- Проверить, что колонка создалась в библиотеке =
Ab Partition. - Для созданной колонки указать Название =
ID, Тип =Int16 Not Null(т.е. 16-битное целое число, которое не должно быть равноNull), - Поля Описание, Правила сравнения строк (MS SQL Server), Правила сравнения строк (PostgreSQL), Значение по умолчанию, флаг Автонкрементная колонка, Начальное значение и Шаг не заполнять.
- Нажать кнопку Сохранить все.
Аналогично добавляются остальные колонки, например, строковая колонка Name с типом String(64) Not Null, т.е. в колонке может храниться Unicode-строка максимальной длиной в 64 символа.
Первичный ключ¶
Для упрощения работы со ссылками на эту таблицу, а также для гарантирования уникальности значений в колонке с идентификатором, создается первичный ключ. Для этого необходимо:
- Выбрать узел “Ограничения” и в контекстном меню нажать Добавить первичный ключ.
- Проверить, что новый ключ добавлен и для него указана библиотека -
Ab Partition. - Отметить для созданного ключа флаг Кластерный, чтобы созданный индекс был кластерным.
- В секции Индексируемые колонки из выпадающего списка выбрать колонку
IDи нажать кнопку + для добавления колонки. - Проверить, что в узле “Индексы” был автоматически создан кластерный уникальный индекс.
- Сохранить схему в базу данных, нажав кнопку Сохранить всё в панели инструментов или сочетанием клавиш Ctrl+S. При этом будет показан диалог сохранения, в котором надо нажать Сохранить ещё раз, дождаться, пока таблица будет добавлена, при этом цвет строки станет зелёным.