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

Строки в таблице типа Перечисление

Для настройки строк в созданной ранее таблице необходимо перейти на дочерний узел Записи, чтобы добавить строки Incoming, Outgoing и Internal.

Для добавления новой строки необходимо нажать кнопку Добавить строку, затем в появивщейся строке заполнить данные:

  • колонка Name - имя типа документа;
  • колонка ID – числовой код, начиная с единицы;
  • колонка Библиотека - созданная на предыдущих шагах библиотека - Ab Partition.

Перемещение между ячейками одной строки осуществляется с помощью кнопки Tab, а между ячейками одной колонки - Enter.

После заполнения данных необходимо сохранить значения сочитанием клавиш Ctrl+S либо с помощью соответствующей кнопки на панели инструментов. Теперь эти значения присутствуют не только в схеме данных, но и в таблице в базе данных.

Example

Пример заполнения данных таблицы “AbDocumentsTypes”:

Разновидности таблиц

Для таблицы, например, “AbDocuments”, требуется определить каким образом она будет использоваться, для этого необходимо выбрать один из следующих вариантов в поле Используется для типа:

  1. Не указан – это обыкновенная таблица, которую можно добавить и при помощи SQL, если добавление через редактор схемы является неудобным. Она не может быть включена в карточки, файлы и задания. Но на неё могут быть ссылки из других таких же таблиц, а также из карточек, файлов и заданий (в отличие от таблиц, добавленных вручную через SQL). Также для такой таблицы могут быть заданы строки, которые будут автоматически добавлены при импорте схемы данных, как это сделано для AbDocumentTypes.

    Tip

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

  2. Карточки – это таблица, которую можно включить в состав карточек, чтобы хранить данные этих карточек. Такая таблица имеет особую структуру. Одна и та же таблица может использоваться в различных типах карточек, например, таблица DocumentCommonInfo используется во всех карточках документов в типовом решении (в т.ч. в карточках входящих и исходящих документов, договоров и др.). Эту же таблицу рекомендуется использовать для карточек документов, добавленных в проекте.

  3. Файлы – аналогично для файлов.
  4. Задания – аналогично для заданий. С точки зрения схемы данных и UI для редактирования, файлы и задания устроены таким же образом, как и карточки, за исключением специфичных системных полей, за которыми “следит” платформа.

Important

Если в поле Используется для типа указано что-то кроме Не указан, то в поле Тип секции нельзя выбрать Перечисление.

Помимо значения Перечисление в поле Тип секции доступны следующие варианты:

  1. Строковая – это строковая секция. На каждый экземпляр карточки, файла или задания (в зависимости от Используется для типа), будет приходиться ровно одна строка в этой таблице, если таблица включена в схему карточки. Например, это таблица “Partners” в карточке контрагента. Использование этого типа секций автоматически добавляет колонку:

    • ID – уникальный идентификатор карточки. По этому полю создаётся первичный ключ и кластерный индекс. Этот идентификатор автоматически заполняется платформой при создании карточки.
  2. Коллекционная – это коллекционная секция. На каждый экземпляр карточки (и др.) будет приходиться ни одной, одна или несколько строк этой таблицы. Например, это таблица “RoleUsers” с перечислением пользователей, входящих в департамент. Использование этой секции добавляет колонки:

    • ID – уникальный идентификатор карточки. По нему автоматически создаётся кластерный индекс, но не первичный ключ, т.к. в таблице может быть несколько строк с одним и тем же ID (для одной и той же карточки).
    • RowID– это уникальный идентификатор строки для этой таблицы, который заполняется платформой, когда пользователь добавляет строки. По этому идентификатору автоматически создаётся первичный ключ.
  3. Иерархическая – это иерархическая секция. Она аналогична коллекционной, но содержит связь между строками “родительский-дочерний” в пределах одного экземпляра карточки посредством колонки ParentRowID. Например, это таблица “TaskHistory”, содержащая древовидную историю заданий в карточке. Существующие контролы не поддерживают иерархические секции (точнее работают с ними так же, как и с коллекционными), поэтому, скорее всего, при использовании иерархической секции также потребуется написать контрол или обрабатывать иерархическую связь в расширениях. Добавляемые в таблицу колонки:

    • ID – уникальный идентификатор карточки.
    • RowID – уникальный идентификатор строки.
    • ParentRowID – ссылка на RowID родительской строки или Null, если текущая строка является корневой.

Для экземпляров карточек платформа автоматически добавляет строку в таблице “Instances”, которая содержит системную информацию по карточке (такую, как дата последнего изменения или ссылка на сотрудника, который создал карточку). Поэтому колонка ID для Используется для типа = Карточки ссылается на таблицу Instances и содержит ограничение по внешнему ключу (foreign key), чтобы никакие идентификаторы, кроме идентификаторов карточек, не были записаны в колонку ID. Аналогично для файлов существует таблица “Files”, а для заданий – “Tasks”. Файлы и задания в TESSA всегда существуют в рамках какой-либо карточки, поэтому Files и Tasks являются коллекционными секциями карточек (Cards + Collections), которые автоматически используются платформой для всех карточек, для которых есть файлы и задания.

Комплексные (ссылочные) колонки

Для таблицы из предыдущего шага подойдёт Используется для типа = Карточки, т.к. она будет включена в тип карточки, и Тип секции = Строковая, т.к. на каждый экземпляр документа будет приходиться ровно одна строка этой таблицы.

Important

Для таблицы, не входящей в типовое решение, рекомендуется указать соответствующую библиотеку, например, Ab Partition.

В данную таблицу можно добавить следующие колонки:

  • Физическую колонку Subject, Тип String(Max) Not Null – тема документа, строка Unicode неограниченного размера, должно быть указано для каждого документа (Not Null).
  • Физическую колонку Number, Тип Int64 Not Null – номер документа, 64-битное целое число.
  • Комплексную колонку Type, Тип Reference (Typified) Not Null – ссылка на тип документа.

    Example

    Пример заполнения комплексной колонки Type таблицы “AbDocuments”:

Комплексная колонка:

  1. Ссылается на строку таблицы, заданной в свойстве Ссылка на таблицу. При этом автоматически создаётся внешний ключ на первичный ключ этой таблицы, если явно не был снят флаг С внешним ключом.
  2. Содержит колонки со значениями внешнего ключа, необходимые для поддержания ссылочной целостности.
  3. Содержит референсные колонки, дублирующие данные из таблицы, на которую ссылается комплексная колонка. Обычно такой колонкой является строка, отображаемая в представлениях (отчётах) и контролах карточки.
  4. Содержит произвольные колонки, которые логически “включаются” в комплексную колонку. Они могут иметь произвольный тип, но должны начинаться с префикса-имени колонки (здесь это Type). Все колонки, включённые в комплексную колонку, добавляются в тип карточки только совместно, поэтому это могут быть колонки, неразрывно связанные со ссылкой и заполняемые в некоторых (или во всех) случаях, когда заполняется ссылка.

    Example

    Ссылка на контрагента 1С должна иметь идентификатор карточки TESSA (внешний ключ) и отображаемое имя контрагента (референсная колонка), но она также может иметь идентификатор, загруженный из 1С, если этот контрагент был добавлен из 1С (для добавленных в TESSA контрагентов это поле будет равно Null).

Флаг Ссылка на родителя используется для связи между вложенными коллекционными секциями, в такой колонке строка дочерней коллекционной секции ссылается на строку родительской секции. Это позволяет организовать в карточках иерархию с ограниченным уровнем вложенности, причём на каждом уровне могут храниться различные данные.

Example

В родительской коллекционной секции могут содержаться этапы согласования с указанием имени этапа и списка ролей, который организуется как дочерняя коллекционная секция, которая содержит ссылку на роль и ссылку на колонку RowID этапа согласования.

В данной таблице необходимо произвести следующие настройки:

  1. Указать таблицу, например, AbDocumentTypes в поле Ссылка на таблицу, т.е. указать, что колонка Type содержит ссылку на таблицу AbDocumentTypes. Первичным ключом этой таблицы является колонка ID, поэтому в узел колонки “Type” была автоматически добавлена колонка “TypeID”. Физически в БД для таблицы будет создана именно колонка TypeID, в то время как колонка Type определена в метаинформации схемы данных для использования в платформе.

    Example

    Комплексную колонку использует ссылочный контрол Reference для заполнения значений.

  2. Выбрать любые поля из целевой таблицы, которые будут входить в ссылку.

    Example

    Если поставить флаг у колонки “Name”, то будет автоматически добавлена колонка TypeName, дублирующая колонку Name в таблице “AbDocumentTypes”.

Аналогично происходит добавление последней колонки:

  1. Partner, Тип Reference (Typified) Null – ссылка на контрагента. Допустим, что контрагент может быть не задан, поэтому следует указать тип данных, как допускающий Null.
  2. Аналогично добавить в неё референсную колонку PartnerName с именем контрагента. Обратить внимание, что все добавленные колонки PartnerID и PartnerName автоматически указываются как допускающие Null.

    Example

    Пример заполнения комплексной колонки Partner таблицы “AbDocuments”:

После произведенных настроек необходимо сохранить схему сочитанием клавиш Ctrl+S. Все созданные объекты в схеме данных сохранены в отдельной библиотеке - Ab Partition. Более подробно об использовании библиотек, экспорте и импорте схемы данных/библиотек можно прочитать в Руководстве Администратора.

Теперь можно приступить к созданию типа карточки на вкладке “Карточки”.

Back to top