1. Добавление атрибута к классу
В разделе Общие настройки | Объектная модель данных | Классы найдите нужный класс. Перейдите во вкладку Атрибуты, нажмите Добавить.
В карточке нового атрибута нажмите кнопку , чтобы открыть конструктор.
Конструктор предлагает две возможности:
- Присвоить атрибуту значение, возвращенное функцией;
- Присвоить атрибуту произвольное значение из списка.
Об использовании функций будет сказано ниже.
Значения, которые можно выбрать из списка, перечислены в описании работы конструктора.
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. Имя пакета и схемы для функции
Найти названия схемы и пакета для функции можно в ее карточке, в поле Родитель: