Перейти к содержанию

Создание перечисления в схеме данных и связанного с ним поля в карточке

Создание перечисления в схеме данных и связанного с ним поля в карточке

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

  1. Открываем TessaAdmin на вкладке “Схема данных”.

    1. Добавляем таблицу типа Enumeration.

    2. В неё добавляем несколько колонок, например ID типа int и Name типа string

    3. Сохраняем схему.

    4. Добавляем в таблицу PK. Для этого кликнем правой по Constraints, жмём Add primary key.

    5. Выбираем созданный PK и видим справа пустой список колонок. Вот в этот список надо добавить колонку ID. Дважды или один раз кликаем по ячейкам таблицы, пока не добьёмся нужного результата. Удаляются колонки нажатием Del.

    6. В случае успеха тут же сохраняем схему. Перезапускаем SchemeEditor и смотрим, что колонки в PK указаны правильно.

    7. Добавляем в таблицу комплексную колонку типа Reference Typified (Null) или (Not Null) на созданную таблицу-перечисление.

    8. Кликаем правой кнопкой по этой колонке, выбираем “Добавить ссылочную колонку”. Должна быть создана колонка вида ColumnName рядом с ColumnID.

    9. Сохраняем схему (и применяем её на базу данных) и перезапускаем application pool.

  2. Открываем TessaAdmin на вкладке “Представления”

    1. Создаём новое представление для выбора из неё значений перечисления.

      Пример

      #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

    2. Не забываем добавить поисковый параметр (см. Name), чтобы работал автокомплит по имени

    3. Не забываем добавить колонки и информацию по ссылке в метаинформацию

  3. Переходим на вкладку “Карточки”

  4. Добавляем в нужную карточку автокомплит (тип “ссылочное поле”)

  5. Указываем комплексную колонку со ссылкой на enum, добавленную в п.1.g

  6. Указываем алиас представления, созданного в п.2.

  7. Указываем алиас параметра, созданного в п.2.b

Back to top