Документация для ACFA-Интеллект

Предыдущая страница Приложение 2. Настройка корректной работы модуля Бюро пропусков в распределенной системе  Приложение 4. Формирование единой базы фотографий Следующая страница


Существует возможность создавать дополнительные поля для объекта Пользователь, используемые в модуле Бюро пропусков (см. Работа с пользователями в Бюро пропусков).

Создание дополнительных полей происходит с помощью текстового редактора, позволяющего просматривать и изменять кодировку текста ASCII.

Структура дополнительных полей в .dbi

Дополнительные поля для объекта Пользователь разделяются на 2 группы:

  1. Базовое поле с обработкой по умолчанию имеет структуру (db_name), (db_type) // (description).
    Пример: is_guest, BIT // Гостевой ключ.
    Обработка по умолчанию зависит от типа данных (см. Поддерживаемые типы данных SQL).
  2. Базовое поле со специальной обработкой имеет структуру (db_name), (db_type) // (description){(fmt)%(prms)}.
    Пример: job_title, CHAR, 20 // Должность{C%Официант|Кассир|Кладовщик}.

    Внимание!

    1. Структурный элемент db_name не может быть пустым и не должен совпадать с уже имеющимися стандартными полями пользователя, т.к. это нарушает общую логику работы модуля Бюро пропусков и приводит к сбоям и потере данных.
    2. Структурный элемент description не может быть пустым, т.к. оно также является названием дополнительного поля, отображаемого в интерфейсном окне Бюро пропусков, в противном случае оно будет игнорироваться системой.
    3. Структурный элемент fmt должно быть одним из фиксированного набора модификаторов (см. пункт Форматы полей со специальной обработкой). Если указан модификатор не из набора или параметры (prms) указаны неверно, поле будет обработано по умолчанию в соответствии с его типом (см. Поддерживаемые типы данных SQL).

Поддерживаемые типы данных SQL

Тип данных SQLПредставлениеОбработка по умолчанию
BITBooleanРаскрывающийся список со значениями Да/Нет

INTEGER
Диапазон (-2147483648; 2147483647)

Integer

Числовое поле с инкрементом/декрементом и возможностью ручного ввода

SMALLINT
Диапазон: от -32768 до 32767, при выходе за границы диапазона значения не будут обновлены
в базе данных

DATETIMEDateTimeКалендарь с возможностью выбора даты и времени

CHAR
Обязательно указывать максимальный размер (пример: 'CHAR, 30') 

StringТекстовое поле
TEXT

Форматы полей со специальной обработкой

ФорматОписаниеСинтаксис
Раскрывающийся список с предопределённым, фиксированным набором возможных значений.
Примечание. Тип в БД может быть также числовым, в этом случае весь набор значений должен был числовым
{С%value1|value2|...|valueN}
Пример: {C%Официант|Кассир|Кладовщик|Охрана}
CT Раскрывающийся список с возможностью ввода произвольных значений. Логика схожа с форматом С, но позволяет вручную заполнить поле текстом в случае необходимости. Используется, если полный список возможных значений слишком велик, но при этом
наиболее часто используемых вариантов не так много (они делаются предопределёнными)
{CT%value1|value2|...|valueN}
Пример: {CT%Москва|Санкт-Петербург}
CCI

Раскрывающийся список с предопределёнными значениями и генерацией событий при сохранении. Используется, если изменение ключевых параметров пользователя требуется запротоколировать в БД или «перехватить» диспетчером событий/скриптом. Целесообразно сделать это поле обязательным для заполнения.
Примечание. Событие генерируется, если после изменения поля данный пользователь был сохранен и не генерируется для новых (создаваемых сейчас) пользователей. Событие генерируется для объекта модуля Бюро Пропусков, которое было отредактировано. Чтобы видеть данное событие в протоколе событий или использовать в диспетчере событий, в файле DDI-файле модуля Бюро Пропусков добавить эти события объекту Бюро Пропусков

{CCI%Descr1(EVENT1)|Descr2(EVENT2)|...||DescrN(EVENTN)}
Пример: {CCI%Выдана(CARD_ISSUED)|Утеряна(CARD_LOST)|Cломана(CARD_BROKEN)}

SЧисловое поле с инкрементом/декрементом и возможностью ручного ввода.
Примечание. Если в БД для поля выбран числовой тип данных, то необходимо учитывать минимальные и максимальные значения в соответствии с диапазонами в синтаксисе
{S%0} или {S%min|max}
Пример 1: {S%0} – диапазон значений: min: -2147483648, max 2147483647
Пример 2: {S%100|999} – диапазон значений: min: 100, max 999
UДанный формат является внутрисистемным и не может быть использован для генерации дополнительных полей-
UT Уникальный текст с валидацией (проверкой на соответствие определенным требованиям) по регулярному выражению-шаблону. Является удобным инструментом пользовательской настройки, но требует технической подкованности в написании регулярных выражений. Вводимый оператором текст сверяется с шаблоном, и только при совпадении с шаблоном допускается окончательное изменение значения поля. Также при сохранении пользователя проверяется уникальность введённого значения: не может быть двух пользователей с одинаковым значением этого поля

{UT%pattern_base64}
Пример:
{UT%XlvQkNCS0JXQmtCc0J3QntCg0KHQotCj0KVdXGR7M31b0JDQktCV0JrQnNCd0J7QoNCh0KLQo9ClXXsyfVxkezIsM30k}

В запакованном в формате Base64 тексте находится следующий шаблон (для русской версии продукта):
^[АВЕКМНОРСТУХ]\d{3}[АВЕКМНОРСТУХ]{2}\d{2,3}$.
Данный шаблон позволяет проверять ввод автомобильного госномера:

  • Х737УХ099 – совпадение шаблону,
  • Ж737УХ09Ф – несовпадение шаблону.

В запакованном в формате Base64 тексте находится следующий шаблон (для английской версии продукта):
^[A-Z]\d{3}-\d{3}-\d{2}-\d{3}-\d$.
Данный шаблон позволяет проверять ввод госномера авто в штате Флорида:

  • F031-469-45-999-5 – совпадение шаблону,
  • F 31-469 45-A99-5 – несовпадение шаблону
UTSУникальный текст. При сохранении пользователя проверяется уникальность введённого значения: не может быть двух пользователей с одинаковым значением этого поля. При попытке ввести в поле ранее указанное значение у другого пользователя будет выдано окно с предупреждением, что такое значение уже имеет другой  пользователь{UTS%0} 
TCНеуникальный текст, содержащий предопределенные значения, с возможностью добавления новых значений. Позволяет по мере необходимости дополнять набор текстовых значений и выбрать повторно значения из списка. Может иметь фиксированный набор предопределенных значений.
Примечание. Перед редактированием поля собираются у всех пользователей все варианты значения этого поля, отсеиваются повторные и добавляются к списку предопределённых значений, если они есть, поэтому:
1) Чтобы из этого списка исчезло определенное кэшированное значение, требуется очистить или поменять его у всех пользователей, которым было установлено данное значение в этом поле.
2) Сохранённое значение с ошибкой будет кэшировано наряду с остальными. То есть варианты «ведро», «вед ро», «вЕдро» или «видро» попадут в кэш и могут фигурировать в списке одновременно
{TC%EMPTY} или {TC%value1|value2|...|valueN}
Пример 1: {TC%EMPTY} – предопределённых значений нет.
Пример 2: {TC%Инженер|Медик|Бухгалтер}
TL Текст с ограничением по длине.
Примечание. Следить, чтобы тип поля в БД не превышал допустимый размер. Для примера выше требуется TEXT или CHAR, 10 (или более)
{TL%length}
Пример: {TL%10} – ограничение длины строки в 10 символов
ROПроизвольное readonly (только для чтения) поле. Используется, например, для отображения данных при импорте пользователей из внешней системы или в случае заполнения этого поля скриптом, когда ручной ввод оператором запрещён.
Примечание. Этот формат похож на обычное текстовое поле, используемое по умолчанию в настройках Бюро Пропусков, которое помечено как «Только чтение». Отличие в том, что поле остаётся нередактируемым, даже если оно помечено как редактируемое. Также у него есть значение по умолчанию
{RO%def_value}
Пример: {RO%Не задано}               

Создание дополнительных полей объекта Пользователь

Для создания дополнительных полей объекта Пользователь выполнить следующие действия:

  1. В директории установки ПК Интеллект, например C:\Program Files (x86)\Интеллект\ создать текстовый документ с расширением .dbi, например intellect.person_extra_fields.dbi.
  2. Открыть в текстовом редакторе созданный .dbi файл.

    Внимание!

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

  3. На первой строке текстового документа ввести [OBJ_PERSON].
  4. На последующих строках задать параметры дополнительных полей:
    1. Через запятую ввести имя поля (db_name), которое будет занесено в БД, тип данных (db_type) данного поля с максимальным размером, если требуется, см. Поддерживаемые типы данных SQL.
    2. Через двойную косую черту "//"  указать название (description) поля, которое будет отображаться в интерфейсном окне Бюро пропусков
    3. При необходимости задать шаблон поведения поля, обозначив начало и конец с помощью фигурных скобок "{ }". 
  5. Сохранить изменения.

    Внимание!

    После сохранения .dbi файла необходимо обновить основную базу данных. Для этого нужно воспользоваться утилитой idb.exe (см. раздел Утилита конвертирования, выбора шаблона и создания резервных копий баз данных idb.exe).

Пример .dbi файла с дополнительными полями объекта Пользователь представлен на рисунке ниже:

В результате созданные поля станут доступны на панели настройки объекта Бюро пропусков на вкладке Дополнительные поля (см. Настройка типа отдела Основной).

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

Основные структурные элементы дополнительного поля объекта Пользователь

ОбозначениеОписание
db_name

Имя дополнительного поля (db_name), которое будет занесено в БД

db_type

Тип данных (db_type) дополнительного поля, размер (если требуется, см. Поддерживаемые типы данных SQL).

descriptionНазвание дополнительного поля, отображаемое в интерфейсном окне Бюро пропусков
fmtМодификатор из набора (см. пункт Форматы полей со специальной обработкой).
prmsПараметры значений поля, вводятся круглыми скобками ()
{Начало шаблона поведения дополнительного поля
%После % перечислятся названия предопределенных значений дополнительного поля. Примечание. Если указать %EMPTY, то предопределенных значений не будет
value1, valueNНазвания предопределенных значений дополнительного поля
|Разделение предопределенных значений дополнительного поля
lengthОграничение длины строки
def_valueЗначение по умолчанию
}Конец шаблона поведения дополнительного поля

Создание дополнительных полей объекта Пользователь завершено.

  • No labels