Типы карточек¶
Тип карточки описывает сущность, являющейся своего рода шаблоном для создания карточек данного вида, например, “Документ”, “Контрагент” или “Настройки уведомлений”. Для типа определяется:
- способ хранения, а именно то, какие поля для каких таблиц в схеме данных используются в этом типе;
- пользовательский интерфейс карточки, связанный с этими полями;
- валидаторы, определяющие необходимые для заполнения поля и другие условия.
Помимо типов карточек, редактор типов позволяет создавать типы файлов и заданий, которые не рассматриваются в этом руководстве. Однако, их структура очень похожа на структуру типов карточек, поэтому не составит труда изучить их самостоятельно или обратиться к соответствующему руководству.
Свойства карточки¶
Создать новый тип карточки можно несколькими способами, для этого необходимо открыть раздел “Карточки”, затем выполнить один из следующих наборов действий:
- в панели инструментов нажать + и выбрать пункт Тип карточки;
- в контекстном меню узла Карточки нажать Добавить тип карточки;
- нажать Ctrl+Shift+C.
После чего появится новый тип в узле Карточки внутри группы “(без группы)”. Типы карточек группируются таким же образом, как и таблицы в схеме данных.
Чтобы начать редактирование созданного узла, например, Card, его необходимо выбрать в дереве, затем указать его свойства:
- Имя – уникальное имя типа карточки. Оно же определяет имя узла в редакторе, который соответствует типу. Имя может быть использовано в расширениях, а также при настройке решения, но обычный пользователь его не будет видеть.
- Заголовок – заголовок типа карточки, т.е. его отображаемое для пользователей название. Значение может быть неуникальным, оно фигурирует при создании карточки, в заголовке вкладки для открытой карточки и в различных представлениях (например, в представлении со списком шаблонов, доступных пользователю).
- Группа – название группы типов карточек. Оно требуется не только для группировки в редакторе, но и для группировки пунктов меню при создании карточки, когда пользователю доступно для создания очень много карточек различных типов, и эти типы группируются в соответствии с этим полем. Причём пользователь по умолчанию видит именно название группы, но при разработке можно написать простое расширение, которое для заданного имени группы подставит другую локализованную строку. Именно таким образом локализуются все группы для стандартных типов карточек.
- Формат дайджеста - определяет строку форматирования для дайджеста карточки, т.е. для названия, используемого в заголовке вкладки, истории действий и т.д. Для использования полей карточки доступна стандартная система плейсхолдеров. Наведя курсор на поле, можно посмотреть всплывающую подсказку с примером. Если поле не заполнено - вычисление дайджеста выполняется стандартным образом (например, это номер карточки, если она включена в типовое решение и в ней присутствует секция с номером).
- Идентификатор типа - идентификатор типа карточки. С помощью кнопок, расположенных справа от поля, можно скопировать идентификатор типа или скопировать идентификатор типа и имя для использования в расширениях.
- Административный - флаг, указывающий, что тип карточки предназначен только для использования администратором. Например, флаг ставится для карточек правил доступа и настроек. Система гарантирует, что пользователь, не являющийся администратором, не имеет доступ к любым действиям с такими карточками (в том числе чтение).
- Разрешить загрузку всем пользователям - флаг, указывающий, что, если у типа карточки выставлен флаг “Административный”, но пользователь не является администратором, карточку данного типа можно загружать с правами на чтение со списком тех файлов и их версий, у типа которых не выставлен флаг “Административный”.
- Скрытый - флаг, позволяющий скрыть тип карточки из списка на создание, т.е. ни один пользователь или администратор не сможет явно создать карточку стандартным образом. Флаг обычно ставится для вспомогательных карточек (карточек-сателлитов), которые создаются расширениями (например, это карточка-сателлит типового процесса согласования с информацией по этапам согласования).
- Разрешить задания - флаг, разрешающий использование заданий для карточек этого типа. Включение этой настройки не добавляет автоматически команды для создания заданий в интерфейсе, но оно разблокирует системную вкладку История заданий и позволяет добавить такие команды, как начало процесса согласования или постановка задачи, в настройках типового решения. Для таких типов карточек, как карточки ролей, карточки настроек и карточки-сателлиты, задания не требуются, поэтому эту настройку отключают.
- Фиксировать действия - флаг, активирующий ведение логов аудита при любом действии с карточкой (например, при создании, открытии, изменении, удалении, импорте, экспорте и др.).
- Удалять в корзину - флаг, активирующий возможность по удалению карточки в корзину с возможностью восстановления. Если пользователь случайно удалит карточку, то в течение нескольких дней администратор сможет восстановить карточку (по умолчанию 30 дней, срок настраивается). Удалённая карточка физически удаляется из всех таблиц, поэтому она также исчезает из всех отчётов.
- Единственный экземпляр - флаг, определяющий, что только один экземпляр карточки может быть создан. Обычно эта опция активируется для всех карточек настроек. Такую карточку можно открыть, не зная её идентификатора, но зная имя типа карточки или идентификатор типа. Также для таких карточек активируется кэширование на сервере и на клиенте, это значительно ускоряет доступ к данным карточки, что также актуально для карточек настроек.
- Загружать при инициализации - флаг, указывающий, что карточка, существующая в единственном экземпляре, будет загружена и добавлена в кэш на клиенте в процессе загрузки приложения.
После настройки свойств необходимо сохранить карточку с помощью кнопки Сохранить все на панели инструментов.
Секции карточки¶
Чтобы пользователь мог использовать карточку в системе необходимо раскрыть созданный на предыдущем шаге узел и настроить следующие узлы:
- Секции – здесь указываются секции карточки, т.е. таблицы, которые включены в эту карточку, и поля, т.е. колонки, которые используются в карточке из выбранных таблиц. В качестве колонок можно выбрать либо обычные физические колонки (строки, числа и т.д.), либо комплексные колонки типа Reference для организации ссылок на другие таблицы (и соответственно на другие карточки). Если таблица включена в секции карточки не целиком (т.е. некоторые колонки не включены), то колонки, не включенные в тип, нельзя использовать в типе карточки, а в БД они будут заполнены значениями по умолчанию (либо из default constraint, либо Null).
- Вкладки – здесь редактируется пользовательский интерфейс карточки, а именно вкладки, блоки и контролы.
- Расширения - здесь добавляются специальные расширения типа. Ознакомиться с доступными расширениями можно в руководстве администратора.
- Валидаторы – здесь указываются валидаторы, которые связываются с полями карточки и добавляют ограничения на эти поля. Например, определяют, что поле
AbDocuments.Type(т.е. ссылка на тип документа) всегда должно быть задано.
В узле Секции, требуется раскрыть группу необходимых таблиц и выбрать нужные колонки внутри раскрытой таблицы. Список выбранных колонок отображается как в дереве (посередине окна), так и в виде списка в правой области окна.
Example
Для настройки AbDocuments в узле Секции требуется раскрыть группу таблиц Ab и выбрать все колонки внутри таблицы AbDocuments.
Пользовательский интерфейс карточки¶
Узел Вкладки позволяет настроить отображение карточки и работу ее полей:
- В верхней области расположены вкладки с кнопкой выпадающего меню и переключатель между редактируемыми вкладками. По умолчанию создана одна вкладка с названием в виде локализованной строки “Карточка” (настраивается в поле Заголовок).
- Посредством кнопки + может быть добавлена новая вкладка, для которой отдельно настраивается UI.
- Система справа от всех вкладок добавляет вкладку “История заданий” с деревом отправленных и завершённых заданий для карточки, если в свойствах типа был установлен флаг Разрешить задания.
Внутри вкладок друг под другом размещаются блоки. Для добавления нового блока необходимо в области Стандартная форма нажать на кнопку + и выбрать элемент:
- Колоночный блок - блок с вертикальным типом расположения элементов внутри.
- Горизонтальный блок - блок с горизонтальным расположением элементов внутри.
Затем в списке ниже определить его свойства:
- Заголовок – это строка с заголовком блока, которую пользователь увидит вместе с горизонтальным разделителем. Также эта строка определяет название блока в списке редактора.
- Алиас – это уникальное имя блока в пределах вкладки, посредством которого к блоку можно обращаться из расширений. Значение по умолчанию
Block1можно не изменять. - Количество колонок – количество колонок с контролами, которые содержит блок. Контролы автоматически выстраиваются сначала по колонкам слева направо, а затем по строкам сверху вниз. Если указать значение
2для блока, то контролы будут выводиться в 2 колонки. - Вертикальный интервал между контролами – вертикальный отступ между строками, в которых размещаются контролы. Можно оставить значение по умолчанию
5. - Горизонтальный интервал между контролами – горизонтальный отступ между колонками, в которых размещаются контролы. Можно оставить значение по умолчанию
5. - Не оптимизировать колонки – опция, отключающая оптимизацию при отображении блока в одну колонку, что позволяет динамически увеличить количество колонок в коде расширений.
- Скрывать блок – скрывает блок из UI карточки. Скрытый блок можно будет сделать видимым в коде расширений.
- Свёрнут по умолчанию - опция, при выставлении которой блок является свернутым, содержимое блока не отображается пользователю при открытии карточки.
- Не сворачивать с верхним блоком - опция, позволяющая не сворачивать нижний блок, при сворачивании верхнего.
- Заголовки слева - настройка, позволяющая отображать заголовки блоков слева.
- Растягивать по вертикали - опция, позволяющая растянуть элемент управления на максимальную возможную высоту в блоке, если он является единственным в блоке, и отключена настройка Не оптимизировать блок.
- Скрывать заголовок – скрывает заголовок блока. Если заголовок скрыт, то горизонтальный разделитель с текстом из свойства Caption не будет отображаться. Показать заголовок можно динамически посредством расширений. Рекомендуется скрывать заголовок блока, если он выглядит как часть соседнего блока, но посредством расширений такой блок со всеми контролами должен быть скрыт, или же если заголовок не должен отображаться по эстетическим соображениям.
Под списком блоков есть область с настройками вкладки:
- Вертикальный интервал между блоками – вертикальный отступ между блоками. Значение по умолчанию подходит для большинства случаев.
- Горизонтальный интервал между блоками – горизонтальный отступ между блоками. Значение по умолчанию подходит для большинства случаев.
- Без предпросмотра файлов - флаг, отключающий область предпросмотра в карточке.
-
Предпросмотр – кнопки, отображающие UI карточки в режиме предпросмотра. Это позволяет увидеть, как выглядит карточка внешне, не запуская TESSA и даже не сохраняя тип карточки:
- Показать без расширений – отображает карточку без расширений, т.е. в строгом соответствии с установленными в редакторе типов свойствами.
- Показать с расширениями – отображает карточку с выполнением расширений на метаинформацию
ICardMetadataExtension, которые могут по каким-то критериям динамически изменить структуру карточки (её секции и поля) и пользовательский интерфейс.
Example
Включив процесс согласования для этого типа карточки, будет отображаться дополнительная вкладка Процесс согласования с настройками этапов процесса, а в схему карточки будут добавлены виртуальные секции для функционирования UI, причём заполнение и реакцию на изменение этих секций отрабатывают расширения типового решения. При разработке важно учесть, что для предпросмотра не работают расширения
ICardUIExtension, которые могут скрывать контролы и выполнять другие динамические изменения UI для нужд решения. Для проверки этих расширений требуется создать или открыть карточку в TESSA.
Контролы и их связь с секциями¶
В области редактирования блока помимо свойств блока указывается список контролов, включённых в этот блок. Контролы добавляются так: выбирается тип контрола из выпадающего списка, и контрол этого типа добавляется в блок через кнопку +.
Аналогично свойствам блока, выбрав контрол в списке можно редактировать свойства контрола. Свойства контролов различных типов похожи, поэтому далее представлены все свойства для типа Целое число:
- Заголовок – заголовок контрола, который отображается пользователю рядом с контролом.
- Алиас – имя контрола, которое может использоваться для обращения к нему из расширений. Задавать его необязательно, в отличие от свойства
Aliasдля блока. - Поля карточки – это поля карточки, с которыми связан контрол. Здесь можно указать только колонки, включённые в тип карточки в редакторе
Sections, причём колонки должны иметь совместимый тип. - Формат поля – поле, позволяющее задать строку формата для отображения значения в контроле. Например, если поле не редактируемое, то число можно дополнить нулями слева до длины в 6 символов, используя строку формата
{0:######}, где в поле{0}передаётся первая выбранная колонка вCard fields. Для описания различных способов форматирования вы можете обратиться к ресурсу MSDN к описанию методаString.Formatдля .NET. - Всплывающая подсказка – строка с всплывающей подсказкой, которая позволяет сообщить пользователю о назначении этого контрола, если он наведёт на него мышь и задержит её на пару секунд. Всплывающая подсказка особенно полезна для описания назначения контрола типа Флажок (и “всплывает” она быстрее).
- Поле не заполнено – текстовое сообщение, которое выводится, если поле в контроле было не заполнено, причём поле является обязательным для заполнения. Обычно для указания того, что поле должно быть заполнено, используются валидаторы, но это также можно определить для конкретного контрола посредством настроек
Mark as requiredиField is required. - Минимальное значение – минимальное число, которое может быть введено в контроле. Можно указать 1, чтобы мог быть указан номер, начиная с 1, или оставить значение по умолчанию min, если ограничений быть не должно.
- Максимальное значение – по аналогии, это максимальное число, которое может быть введено в контроле.
- Цвет текста - цвет отображаемого текста.
- Стиль текста - стиль шрифта отображаемого текста.
- Отметить как обязательное - отметить поле как обязательное для заполнения.
- Скрывать поле - скрыть поле.
- Только для чтения – признак того, что контрол всегда доступен только для чтения, и пользователь не сможет ввести в него значение. Также контрол может быть доступен только для чтения, если у пользователя недостаточно прав на редактирование карточки или связанного поля (это определяется расширениями, например, расширениями типового решения для процесса согласования).
- Скрывать заголовок – скрывает заголовок контрола. Если флаг стоит, то пользователь не увидит текста, заданного в свойстве заголовок.
- Растягивать по ширине – указывает блоку, что для размещения этого контрола надо выделять целую строку со всеми колонками, а не только одну колонку в этой строке.
Example
Для контрола Заголовок и Поля карточки можно выбрать колонку Number через кнопку с троеточием. Свойства контрола также должны быть заполнены.
Для ввода значения из справочника в TESSA используют контрол типа Cсылка, который позволяет вводить значения, используя такие средства, как: автодополнение при вводе, выбор одного из значений из выпадающего списка или выбор значений из всех доступных справочников по кнопке с троеточием. Для контрола следует указать заголовок и Поля карточки – комплексную колонку Type, в которой будет содержаться как идентификатор типа документа (колонка TypeID), так и отображаемый текст для выбранного типа (колонка TypeName).
Предпросмотр типа карточки, выбранный одной из кнопок Показать без расширений или Показать с расширениями, покажет следующую проблему:

Несмотря на то, что контрол отобразился, и является связанным с полем AbDocuments.Type в карточке, ввести в него значение невозможно, т.к. для контрола Ссылка надо указать источник данных для автодополнения. Таким источником в TESSA выступают представления. Если подходящего представления для таблицы AbDocumentTypes нет, то его надо создать.
После настройки необходимо сохранить созданный тип карточки с помощью кнопки Сохранить всё на панели инструментов и переключиться на вкладку “Представления” для редактирования представлений.