Редактирование расширенных метаданных

Редактировать расширенные метаданные могут только администраторы Docsvision.

При использовании расширенных метаданных необходимо учитывать, что элементы управления могут быть привязаны к полям определённых типов. Без привязки в элементах не будут сохраняться значения.

Таблица 1. Требуемые настройки некоторых типовых элементов
Элемент управления Тип секции Тип поля Ссылка

Сотрудник

Struct

RefID

Базовые карточки  Справочник сотрудников  Подразделения  Сотрудники

Сотрудники

Table

RefID

Базовые карточки  Справочник сотрудников  Подразделения  Сотрудники

Строка конструктора справочников

Struct

RefID

Базовые карточки  Конструктор справочников  Типы записей  Запись

Если расширенное поле используется в поисковом запросе, представлении или каком-либо другом компоненте системы и было удалено, корректная работа соответствующих компонентов будет нарушена.

Чтобы изменить расширенное поле:
  1. Откройте окно редактирования расширенных метаданных любым доступным способом:

    • Нажмите на кнопку Редактирование метаданных Редактирование динамических метаданных на ленте главного окна "Конструктора разметок".

    • Нажмите на кнопку в малой форме свойств элемента управления.

    • Воспользуйтесь меню выбора источника данных в окне расширенных свойств элемента управления.

      Окно редактирования расширенных метаданных содержит дерево стандартных ("обычных") метаданных — элементов схем карточек. Элементы представляют собой иерархию секций и полей, на основе которых создаются стандартные карточки.

      Окно редактирования расширенных метаданных
      Рисунок 1. Окно редактирования расширенных метаданных
  2. Нажмите на панели инструментов на кнопку Синий замок открыт, чтобы заблокировать метаданные для редактирования. Значок блокировки изменится на Зелёный замок, панель инструментов будет разблокирована.

    Если метаданные заблокированы другим пользователем, вместо кнопки Синий замок открыт будет отображаться значок Красный замок. Дождитесь завершения редактирования метаданных другим пользователем — наведите курсор мыши на значок Красный замок, чтобы узнать ФИО пользователя, заблокировавшего метаданные.

    Блокировка автоматически снимается при закрытии Конструктора разметок (с сохранением настроек или без сохранения).

  3. Создайте собственные ветки секций, добавьте в созданные секции пользовательские поля.

  4. Сохраните изменения.

  5. Перезапустите сервисы и клиенты Docsvision.

    После добавления или изменения расширенных или динамических метаданных необходимо очистить кэш клиентских и серверных процессов Docsvision. Для этого перезапустите все экземпляры сервера Docsvision (dvappserver, включая экземпляры данных процессов на узлах кластера Docsvision), dvworkflow (включая экземпляры сервиса Workflow на узлах кластера Workflow), экземпляры Windows-клиента, все экземпляры сервера Web-клиент и т. д.

Добавление секции

Пользовательская секция может быть создана только как секция верхнего уровня. Не рекомендуется добавлять расширенные секции в обычные секции.

Чтобы добавить секцию:
  1. Откройте окно Редактирование метаданных.

  2. Чтобы добавить секцию, нажмите кнопку Тонкий зелёный плюс.

    Добавление динамической секции
    Рисунок 2. Добавление динамической секции
  3. Заполните поля окна:

    1. В поле Имя укажите произвольное текстовое обозначение элемента.

    2. В поле Тип выберите тип секции:

      • Struct — секции данного типа предназначены для хранения одной строки данных — одного набора значений полей секции.

        Схема плоской секции
        Рисунок 3. Схема плоской секции
      • Table — секции данного типа могут использоваться для хранения одной или нескольких не связанных строк данных (наборов значений полей секции).

        В секциях типа Table и Tree запрещается создавать поля метаданных с именем section (вне зависимости от регистра), т.к. данное имя зарезервировано системой.

        Схема табличной секции
        Рисунок 4. Схема табличной секции
      • Tree — секции данного типа могут использоваться для хранения одной или нескольких строк данных, которые могут быть связаны между собой по правилу родитель-потомок. Не стоит путать данный тип секций со структурой, включающей родительскую и вложенную секции — у секции типа Tree все строки имеют идентичный набор полей.

        В секциях типа Table и Tree запрещается создавать поля метаданных с именем section (вне зависимости от регистра), т.к. данное имя зарезервировано системой.

        Иерархическая секция
        Рисунок 5. Иерархическая секция

        Запрещено изменять тип существующей расширенной секции.

  4. Для секции может быть создано произвольное количество значений имени для разных локалей.

    С помощью кнопок Плюс Добавить и Красный крестик Удалить можно добавлять и удалять поля значений. Каждому значению можно назначить любую из доступных в системе локалей (локали обозначаются двух- или трёхбуквенным кодом и доступны в выпадающем списке).

Добавить, изменить или удалить поле

Поле может быть добавлено только к расширенной секции.

Условия использования расширенных метаданных:
  • Чтобы минимизировать риск возникновения конфликтов с имеющимися расширенными полями, для добавления пользовательских полей рекомендуется использовать пользовательские секции. При этом никаких запретов на добавление расширенных полей в статические секции нет.

  • Системные секции нельзя использовать для добавления пользовательских полей. Системная секция предназначена для хранения системной информации о карточке. В каждой карточке такая секция имеет своё название, например, секция Системные свойства (SystemInfo).

  • Изменение расширенных полей и секций будет приводить к изменениям в схеме таблиц и обновлению хранимых процедур. Такие операции могут блокировать другие транзакции и значительно влиять на время выполнения пользовательских операций. Поэтому изменения в расширенных метаданных стоит выполнять в нерабочее время.

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

Чтобы добавить поле:
  1. Откройте окно Редактирование метаданных.

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

  3. Нажмите кнопку Зелёный плюс.

    Кнопка активна, если в дереве выделена любая секция.

    Редактирование динамического поля
    Рисунок 6. Редактирование динамического поля
  4. В поле Имя укажите произвольное текстовое обозначение элемента.

    В качестве имён нельзя использовать служебные обозначения: UserID, SessionID, InstanceID, RowID, ParentRowID, ParentTreeRowID, ChangeServerID, SDID и прочие.

    Длина имени поля не должна превышать 20 символов.

    Использовать кириллицу в названии расширенных полей не рекомендуется для БД Microsoft SQL и запрещено для БД PostgreSQL.

  5. В поле Тип выберите один из доступных вариантов, приведенных в таблице.

    Таблица 2. Доступные варианты типов полей
    Обозначение типа Значение

    Int

    Целое

    Bool

    Логический тип (возможны значения true/false)

    DateTime

    Дата/время

    Enum

    Перечисление

    Bitmask

    Битовая маска

    UniqueID

    Уникальный идентификатор

    UserID

    Идентификатор пользователя

    String

    Короткая текстовая строка

    UniString

    Строка в формате Unicode

    FileID

    Идентификатор файла

    Float

    Значение с плавающей точкой

    RefID

    Ссылка на значение из справочника или на сам справочник

    RefCardID

    Ссылка на карточку

    Text

    Текст

    Unitext

    Универсальный текст

    Binary

    Значение в двоичном виде

    Image

    Изображение

    Sdid

    Идентификатор безопасности

    Decimal

    Десятичное значение

    Variant

    Универсальное поле

    Для полей с текстовым содержимым рекомендуется выбирать типы Text и Unitext, для которых в БД отсутствует явное ограничение по размеру содержимого — в Microsoft SQL представлены типами varchar(max) и nvarchar(max) соответственно. В отличие от типов String и Unistring, для которых установлено ограничение на размер содержимого — varchar(8000) и nvarchar(8000) соответственно.

    Также следует обратить внимание, что при изменении типа существующего поля с String на Unistring, или с Unistring на String для них сохраняется установленное при создании ограничение на размер содержимого: для String — 4000 знаков, для Unistring — 8000 знаков. Фактическое ограничение размера поля смотрите в таблице dvsys_fielddefs базы данных Docsvision.

    Значение поля типа Decimal в пользовательском интерфейсе отображается с разделителем, установленным в региональных настройках. При изменении значения поля также необходимо использовать десятичный разделитель, установленный в региональных настройках.

    Не рекомендуется изменять тип существующего расширенного поля. Если новый тип несовместим с текущим, то изменение типов приведет к ошибке.

  6. В поле Ссылка укажите значение для ссылки.

    Поле доступно, если для типа ссылки указано значение RefID или RefCardID.

  7. В поле Тип ссылки укажите значение типа ссылки.

    Поле доступно только для типа RefCardID.

    Доступные варианты:
    • Не указан.

    • Слабая ссылка.

    • Сильная ссылка.

    • Авто (тип определяется автоматически).

  8. В поле Перечисление укажите возможные значения поля.

    Поле доступно только для типа Enum.

    1. Нажмите кнопку Три точки.

    2. В появившемся окне Редактирование энумератора добавьте элементы перечисления.

      Элемент перечисления состоит из псевдонима и значения перечисления — будет содержаться в поле карточки.

      Пример заполнения энумератора
      Рисунок 7. Пример заполнения энумератора

      Длина псевдонима должна быть не больше 64 символов.

      Для элементов можно настроить отображаемые в карточке значения, иначе отображается псевдоним. Для этого нажмите кнопку Карандаш и добавьте локализованные значения для требуемых языков.

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

    Поле доступно только для БД Docsvision, работающей с расширенными метаданными.

    Доступные варианты:
    • Копировать значение поля (поведение по умолчанию) — при копировании или создании по шаблону карточки значение поля будет копироваться.

    • Очищать значение поля — при копировании или создании по шаблону карточки значение поля будет очищаться (устанавливаться в NULL).

    • Копировать объект по ссылке — при копировании или создании по шаблону карточки будет копироваться связанная карточка или файл. Данный вариант доступен только для полей типа RefCardID и FileID.

  10. Завершите настройку нажатием на кнопку ОК.

    В дальнейшем, любое созданное поле или секцию можно отредактировать с помощью кнопок Редактировать поле и Редактировать секцию на ленте окна редактирования метаданных, либо удалить, нажав кнопку Удалить поле или Удалить секцию. Эти команды также доступны в контекстном меню поля или секции.

Сохранение изменений метаданных в БД

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

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

Для Microsoft SQL Server Management Studio:
declare @value bit = 0
exec dvsys_setting_set N'UseExtendedMetadataScope', @value;
Для PostgreSQL:
select * from public."dvsys_setting_set"('UseExtendedMetadataScope', false);

Прежнее поведение может потребоваться для исправления настроек метаданных, если они по каким-то причинам перестали соответствовать актуальной структуре БД.

Когда настройка больше не требуется, необходимо удалить её из dvsys_settings или задать для неё значение 1 (Microsoft SQL Server Management Studio) или true (PostgreSQL).

После изменения настройки необходимо перезапустить dvappserver.