Создание перечисления в схеме данных и связанного с ним поля в карточке
Создание перечисления в схеме данных и связанного с ним поля в карточке¶
Предложенный ниже подход позволяет создать перечисления, состав которых изменяет только администратор системы. Если состав перечислений динамически меняется пользователями по ходу эксплуатации, то необходимо использовать подход с карточками на каждое значение перечисления.
-
Открываем TessaAdmin на вкладке “Схема данных”.
-
Добавляем таблицу типа Enumeration.
-
В неё добавляем несколько колонок, например ID типа int и Name типа string
-
Сохраняем схему.
-
Добавляем в таблицу PK. Для этого кликнем правой по Constraints, жмём Add primary key.
-
Выбираем созданный PK и видим справа пустой список колонок. Вот в этот список надо добавить колонку ID. Дважды или один раз кликаем по ячейкам таблицы, пока не добьёмся нужного результата. Удаляются колонки нажатием Del.
-
В случае успеха тут же сохраняем схему. Перезапускаем SchemeEditor и смотрим, что колонки в PK указаны правильно.
-
Добавляем в таблицу комплексную колонку типа Reference Typified (Null) или (Not Null) на созданную таблицу-перечисление.
-
Кликаем правой кнопкой по этой колонке, выбираем “Добавить ссылочную колонку”. Должна быть создана колонка вида ColumnName рядом с ColumnID.
-
Сохраняем схему (и применяем её на базу данных) и перезапускаем application pool.
-
-
Открываем TessaAdmin на вкладке “Представления”
-
Создаём новое представление для выбора из неё значений перечисления.
Пример
#view(DefaultSortColumn: ElementName, DefaultSortDirection: asc, Paging: optional) #param(Alias: Name, Caption: Имя, Hidden: false, Type: nvarchar, Multiple: true) #column(Alias: ElementID, Hidden: true) #column(Alias: ElementName, Caption: Сегмент страхования, SortBy: cs.Name) #reference(ColPrefix: Element, RefSection: CASCO_InsuranceSegments, IsCard: false)
select [ID] as ElementID, [Name] as ElementName from CASCO_InsuranceSegments cs with(nolock) #if_def_any{ where 1 = 1 #param_expr(Name, cs.Name) } order by #order_by
-
Не забываем добавить поисковый параметр (см. Name), чтобы работал автокомплит по имени
-
Не забываем добавить колонки и информацию по ссылке в метаинформацию
-
-
Переходим на вкладку “Карточки”
-
Добавляем в нужную карточку автокомплит (тип “ссылочное поле”)
-
Указываем комплексную колонку со ссылкой на enum, добавленную в п.1.g
-
Указываем алиас представления, созданного в п.2.
-
Указываем алиас параметра, созданного в п.2.b