1. Добавление атрибута к классу

В разделе Общие настройки | Объектная модель данных | Классы найдите нужный класс. Перейдите во вкладку Атрибуты, нажмите Добавить.

 В карточке нового атрибута нажмите кнопку , чтобы открыть конструктор.

 Конструктор предлагает две возможности:

  1. Присвоить атрибуту значение, возвращенное функцией;
  2. Присвоить атрибуту произвольное значение из списка.

Об использовании функций будет сказано ниже.

Значения, которые можно выбрать из списка, перечислены в описании работы конструктора.

1.1. Использование функции в конструкторе

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

Выбрав фунцию в списке, вы сможете указать значения ее параметров:

Подробности о нужной вам функции можно найти также в Реестре объектов. Например, о функции get_attr_value_str реестр подскажет, что только первые два ее параметра (POBJ_ID и PATTR) являются обязательными.

1.1.1. Возможные значения параметров

Значения параметров можно выбрать из выпадающего списка:

1.1.1.1. Значение

Любое число:

1.1.1.2. Системная переменная

Значение любого системного параметра:

Доступные параметры перечислены в разделе Система | Системные параметры | Список всех параметров

1.1.1.3. Запрос

Значения других атрибутов (в том числе полей представления, к которым нужно обращаться не по ID, а по названию колонки) можно получить с помощью SQL-запроса:

1.1.1.4. Текст

Произвольная текстовая строка:

1.1.1.5. Атрибут класса

Значение любого другого атрибута:

 В списке, наряду с атрибутами класса, можно выбрать и поля представления:

От атрибутов класса они отличаются отсутствием удобочитаемых названий (вместо названия — заголовок колонки в БД).

2. Обращение к значениям атрибутов через SELECT

Вычисляемый атрибут может ссылаться на значение другого атрибута, полученное как напрямую, так и через SQL-запрос. Чтобы получить значение другого атрибута в SELECT, нужно знать его идентификатор. Обращаться можно как к атрибутам класса, так и к параметрам представления (напр., START_DT).

2.1. Формат записи

Идентификатор атрибута нужно окружить метками A$ и _$A_; перед первой меткой поставить двоеточие — знак bind-переменной:

Например:

SELECT :A$100420000000000000012_$A_

При обращении к параметру представления — вместо идентификатора используется название:

SELECT to_char(to_timestamp_tz(:START_DT_$A_), 'dd.mm.yyyy') from dual

2.2. Вызов функции внутри SELECT

Внутрь SQL-запроса можно поместить вызов функции:

SELECT ONM.API_DB_ATTR.GET_ATTR_VALUE_STR(3102710000000000606997, 'SDP_NEED_SUMM')
    FROM ONM_RM.API_EXT_DEVICES_OPER mt;

Обратите внимание. К имени вызываемой внутри запроса функции нужно добавить префикс, в которой входят название схемы и название пакета:

Узнать имя схемы и пакета вы можете в разделе Реестр объектов (см. ниже).

3. Использование Реестра объектов для получения сведений о функциях и их параметрах

Откройте раздел Разработчик | Реестр объектов. Отфильтруйте список объектов по названию функции (например, get_attr_value).

3.1. Сведения о параметрах функции

Развернув строку нужной функции, вы увидите список параметров. Кроме аргументов функции, в списке указано и возвращаемое значение (объект RETURN).

Возвращаемое значение отличается от аргументов особым именем (RETURN). В карточке параметра, в столбце IN/OUT (входной/выходной параметр), будет указано: OUT.

Позиция параметра указана в его карточке, во вкладке Подробно о параметре.

Обратите внимание также на поле По умолчанию. Если в этом поле N — аргумент обязательный; если Y — у аргумента есть значение по умолчанию (0 или FALSE), его можно опустить.

Порядок аргументов для рассматриваемой функции следующий:


Имя параметра

Порядок следования

Обязательный?

POBJ_ID

1

Да

PATTR

2

Да

PRESOLVE

3

Нет

PDATE

4

Нет

PPOS

5

Нет

P_FORCE_VAL

6

Нет


В описании аргумента PRESOLVE заметьте список возможных значений. 

Текст показывается не полностью, чтобы увидеть его целиком, щелкните по многоточию.  

3.2. Имя пакета и схемы для функции

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