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

Группы ссылок

Описание и общие понятия

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

Группа ссылок - это карточка, которая описывает настройки группы значений определенного типа и способ формирования этих значений.

Тип группы ссылок - это карточка, которая определяет тип значений (например Guid, Int32) для карточек Группа ссылок, которые принадлежат данному типу группы ссылок. Тип группы ссылок также описывает подмножество значений, которые могут входить в группы ссылок данного типа и условия формирования этих значений.

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

  1. Автоматически при помощи платформенного плагина NormalExtensionsScheduler для Chronos, который запускается по умолчанию каждые 15 минут, подробнее см. в разделе Настройка плагинов Chronos.
  2. При помощи команд для консольной утилиты tadmin, подробнее см. в разделе Команды пересчета групп ссылок.
  3. Вручную при помощи кнопки Рассчитать значения в карточках Группа ссылок и Тип группы ссылок.

Important

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

Карточка Тип группы ссылок

Общая информация

Найти и отредактировать список карточек Тип группы ссылок можно на рабочем месте Администратор, в представлении Справочники -> Группы ссылок -> Типы групп.

По умолчанию в системе уже присутствуют несколько карточек Тип группы ссылок. Подробнее см. в разделе Платформенные типы групп ссылок.

Подробно о том, как добавить новые типы, см. в разделе Создание и настройка карточек Тип группы ссылок .

Представление типов групп ссылок

Карточка тип группы ссылок

Карточка Тип группы ссылок содержит следующие контролы и кнопки:

Основной блок

  • Наименование типа группы - название данного типа группы.
  • Тип ключа - тип ключа (тип идентификаторов значений) данного типа группы ссылок и принадлежащих ему групп ссылок. Поле доступно для редактирования только до первого сохранения карточки.
  • RefSection значений группы - список используемых RefSection, разделённых через пробел, для выбора значения данного типа. Используется в контролах Значения и Исключаемые значения в карточках Группа ссылок. Подробнее см. Настройка параметра RefSection значений группы в карточке Тип группы ссылок.
  • RefSection группы - определяет RefSection группы, используемый в представлении Группы ссылок при выборе значения для конкретного типа группы. Подробнее см. Настройка параметра RefSection группы в карточке Тип группы ссылок.
  • Колонка с именем значения - наименование колонки, из которой берётся имя для значений группы.
  • SQL-скрипт - SQL-запрос для получения всех значений для групп, принадлежащих данному типу. Подробнее см. Режим расчета группы ссылок - SQL-запрос.
  • C#-скрипт - скрипт на языке C# для получения всех значений для групп, принадлежащих данному типу. Подробнее см. Режим расчета группы ссылок - Скрипт и Объект контекста C#-скрипта.
  • Кнопка Выполнить компиляцию - выполняет компиляцию текущего C#-скрипта и, в случае успеха, инвалидирует кэш компиляции для текущего типа группы ссылок.
  • Кнопка Выполнить компиляцию всех типов - выполняет компиляцию всех C#-скриптов типов групп ссылок и, в случае успеха, инвалидирует их кэши компиляции.

Блок Значения

Блок "Значения" карточки тип группы ссылок

  • Предупреждение “Расчет еще не был произведен.” - данное предупреждение отображается в том случае, когда расчет значений типа группы еще не был произведен. Например, при создании новой карточки.
  • Рассчитанные значения - таблица, содержащая значения после расчета.
  • Кнопка Рассчитать значения - позволяет выполнить расчет значений в ручном режиме, не дожидаясь автоматического расчета посредством плагина для Chronos.
  • Последний успешный расчет значений - отображает дату и время последнего успешного расчета значений (если не null, иначе контрол не отображается).
  • Дата и время последней ошибки - отображает дату и время последней ошибки расчета значений (если не null, иначе контрол не отображается).
  • Текст сообщения - отображает текст ошибок расчета, различных предупреждений или других сообщений (если сообщение не пусто, иначе контрол не отображается).

Important

При расчете значений сначала выполняется SQL-скрипт (если есть), затем полученный результат SQL-запроса будет передан в объекте контекста и доступен для дальнейшей обработки внутри C#-скрипта.

Создание и настройка карточек Тип группы ссылок

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

  1. Создать непосредственно карточку Тип группы ссылок. Это можно сделать на рабочем месте Администратор, в представлении Справочники -> Группы ссылок -> Типы групп.
  2. Заполнить параметры созданной карточки. Подробнее про назначение параметров карточки см. в разделах Карточка Тип группы ссылок и Настройка параметров RefSection в карточке Тип группы ссылок.
  3. Создать специальный узел на рабочем месте Администратор. Это позволит использовать группы ссылок данного типа в качестве значений. Подробнее см. Создание и настройка узла для типа группы ссылок.

Пример настроенной карточки Тип группы ссылок для состояний документа:

Исключаемые значения

Настройка параметров RefSection для карточек Тип группы ссылок

Настройка параметра RefSection значений группы

Настройка этого параметра влияет на то, какие значения будут отображаться для выбора в контролах Включаемые значения и Исключаемые значения карточек Группа ссылок.

В контроле должен быть указан список RefSection представлений и/или узлов рабочего места, содержащих значения для данного типа группы ссылок.

RefSection значений группы

На изображении выше представлены настройки карточки Тип группы ссылок для состояний документа, RefSection KrDocState указан в представлении Состояния документа, а KrDocStateRefGroup в генерируемом представлении, которое указывается в настройках узла рабочего места и по умолчанию совпадает с настройкой RefSection группы.

Пример доступных для выбора значений после произведенной настройки:

  • доступны как группы того же типа

Выбор групп

  • так и отдельные значения, входящие в данный тип группы ссылок

Выбор отдельных значений

Настройка параметра RefSection группы

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

Генерируемое представление имеет наименование, установленное в поле RefSection группы с префиксом RefGroups_.

Например, параметр RefSection группы задан как KrDocStateRefGroup

RefSection группы

тогда генерируемое представление будет иметь имя RefGroups_KrDocStateRefGroup и его можно будет выбрать при настройке узла рабочего места.

RefSection группы

Создание и настройка узла рабочего места для групп ссылок определенного типа

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

В настройках данного узла необходимо:

  • установить параметр Режим отображения в положение Режим отбора (если нет необходимости в отображении данного узла на рабочем месте);
  • установить параметр Где отображать узел в положение Везде, чтобы возможность выбора групп ссылок была доступна для всех типов клиентов;
  • в параметре Представление выбрать представление с наименованием, которое было указано при настройке параметра RefSection группы карточки Тип группы ссылок. У таких представлений будет префикс RefGroups_, для групп ссылок типа Состояние документа представление может называться, как в примере ниже, RefGroups_KrDocStateRefGroup.

Остальные параметры узла могут быть установлены произвольно.

Пример настроенного узла для групп ссылок типа Состояние документа:

Исключаемые значения

Платформенные типы групп ссылок

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

  • Состояние документа
  • Тип документа
  • Тип задания
  • Тип карточки

Note

Тип группы Состояние документа имеет тип ключа значений - Int32, т.к. идентификаторы значений из списка Состояния документа также имеют тип Int32.

Платформенные типы групп ссылок

Карточка Группа ссылок

Найти и отредактировать список карточек Группа ссылок можно на рабочем месте Администратор, в представлении Справочники -> Группы ссылок -> Группы.

Общая информация

Представление групп ссылок

Карточка группа ссылок

Карточка Группа ссылок содержит следующие контролы и кнопки:

Основной блок

  • Наименование группы - название данной группы ссылок.
  • Описание - текстовое описание данной группы.
  • Тип группы - тип группы, к которому относится данная группа ссылок. Доступно для редактирования только до первого сохранения карточки.
  • Целочисленный идентификатор - числовой идентификатор группы. Используется когда тип ключей значений типа группы является целым числом. Значение данного поля должно быть уникально относительно других значений выбранного типа группы. Автоматический валидатор проверит данное поле на уникальность в момент сохранения карточки в рамках рассчитанных значений типа группы (т.е. значения типа группы к этому моменту должны быть рассчитаны), и идентификаторов других групп этого типа. За другие и/или будущие вероятные коллизии ответственность несет администратор.
  • Режим расчета значений - способ расчёта значений, см. Режимы расчета значений.
  • Включаемые значения - список включаемых в группу значений. Используется и отображается только в режиме расчета Ручной ввод.
  • Исключаемые значения - список исключаемых из группы значений, см. Исключаемые значения.
  • SQL-скрипт - SQL-запрос для получения значений группы. Используется и отображается только в режиме расчета SQL-запрос.
  • C#-скрипт - скрипт на языке C# для получения значений группы. Используется и отображается только в режиме расчета Скрипт. Дополнительную информацию см. в разделе Объект контекста C#-скрипта.
  • Кнопка Выполнить компиляцию - выполняет компиляцию C#-скрипта карточки и, в случае успеха, инвалидирует кэш компиляции для текущего типа группы ссылок.
  • Кнопка Выполнить компиляцию всех групп текущего типа - выполняет компиляцию C#-скриптов всех групп ссылок текущего типа и, в случае успеха, инвалидирует их кэши компиляции.

Блок Значения

Блок “Значения” карточки Группа ссылок идентичен одноименному блоку карточки Тип группы ссылок. Подробнее см. Блок “Значения” карточки Тип группы ссылок.

Режимы расчета значений

Группы ссылок могут иметь различные режимы расчета значений, описанные ниже.

Ручной ввод

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

Note

Значениями в контроле Включаемые значения могут быть как отдельные значения, доступные для типа, к которому относится данная группа, так и другие группы этого же типа. Отображаемые значения для выбора зависят от настройки RefSection значений группы в Типe группы ссылок, к которому принадлежит данная Группа ссылок.

Режим расчета группы ссылок - Ручной ввод

Из примера выше видно, что результатом расчета будет выбранное значение На подписании и все значения, рассчитанные в группе Группы состояний документа №2.

Режим расчета группы ссылок - Ручной ввод, результат

Значения из типа

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

Например, необходимо чтобы группа содержала все типы документов, кроме Договор и Приказ, для этого в контроле Режим расчета значений требуется выбрать Значения из типа, а в контрол Исключаемые значения добавить значения Договор и Приказ:

Режим расчета группы ссылок - Значения из типа

После расчета результат будет содержать все возможные для данного типа значения, кроме исключенных:

Режим расчета группы ссылок - Значения из типа, результат

SQL-запрос

В режиме SQL-запрос значения можно получить непосредственно из БД.

Результат запроса должен состоять из двух колонок Value (идентификатор значения) и Name (наименование значения) соответственно. Если имя для значения отсутствует или не требуется, то в колонке Name возвращается null.

Режим расчета группы ссылок - SQL-запрос

Important

Тип идентификатора значения должен совпадать с типом ключа значений группы ссылок. См. основной блок карточки Тип группы ссылок.

Скрипт

Режим Скрипт предоставляет возможность использовать пользовательскую логику для генерации значений. В данном режиме также есть доступ к данным из БД и ко всем доступным пользователю зависимостям Unity-контейнера.

Внутри скрипта разработчику доступен объект контекста. Данный объект позволяет возвращать список значений из логики скрипта, а также предоставляет доступ к базе данных и Unity-контейнеру.

Пример получения значений состояний документа из метаданных с помощью C#-скрипта.

Используется следующий скрипт:

var metadata = context.UnityContainer.Resolve<ICardMetadata>(); var enumerations = await metadata.GetEnumerationsAsync(); if (enumerations.TryGetValue("KrDocState", out var docStates)) { context.ValueList = docStates.Records.ToDictionary(x => x["ID"], x => (string) x["Name"]); }

После рассчета значений получится следующий результат:

Режим расчета группы ссылок - Скрипт

Important

Тип идентификатора значения должен совпадать с типом ключа значений группы ссылок. См. основной блок карточки Тип группы ссылок.

Исключаемые значения

Фильтр по исключенным значениям доступен для любого режима расчета значений и применяется во время расчета значений группы.

Note

Значениями в контроле Исключаемые значения могут быть как отдельные значения, доступные для типа, к которому относится данная группа, так и другие группы этого же типа. Отображаемые для выбора значения зависят от настройки RefSection значений группы в Типе группы ссылок, к которому принадлежит данная Группа ссылок.

Если исключаемые значения содержат в качестве значения ссылку на группу, то предварительно данные ссылки будут “развёрнуты” в реальные значения, после чего значения группы будут отфильтрованы.

Пример, когда необходимы все значения из типа, кроме значений, входящих в другую группу:

Исключаемые значения

Объект контекста C#-скрипта карточек Тип группы ссылок и Группа ссылок

Данный объект используется и доступен только внутри C#-скриптов при расчете значений карточек Тип группы ссылок и Группа ссылок. Он позволяет возвращать список значений из логики C#-скрипта, а также предоставляет доступ к базе данных и Unity-контейнеру.

В зависимости от типа карточки объект контекста также содержит информацию о текущем типе группы ссылок или группе ссылок соответственно.

Свойства объекта контекста C#-скрипта для карточки Тип группы ссылок

  • RefGroupType - полная информация о текущем типе группы ссылок.

Свойства объекта контекста C#-скрипта для карточки Группа ссылок

  • RefGroup - полная информация о текущей группе ссылок.

Общие свойства объекта контекста C#-скрипта для карточек Тип группы ссылок и Группа ссылок

  • ValueList - список значений в виде Dictionary<object, string?>, где object - представляет значение, а string? - имя этого значения. Данный список может быть использован при выполнении C#-скрипта, также этот список может быть изменен и заполнен самим C#-скриптом, а в дальнейшем использован как полезный результат выполнения C#-скрипта.
  • UnityContainer - контейнер Unity с зависимостями.
  • DbScope - объект для работы с БД.
  • CancellationToken - объект, посредством которого можно отменить асинхронную задачу.
Back to top