Назначение
Плагин db в hid предназначен для удаленной работы с ядром АСР "Гидра". Он позволяет выполнять хранимые процедуры и делать SQL-выборки из БД без установки непосредственного соединения с ней.
Принцип работы
Для работы с hid используется протокол XML-RPC или SOAP.
Все хранимые процедуры СУБД отображаются в названия методов напрямую (например, для процедуры SI_USERS_PKG.SI_USERS_PUT используется соответствующий метод плагина SI_USERS_PKG.SI_USERS_PUT). В качестве аргумента методов хранимых процедур следует передавать структуру (хэш, словарь) с параметрами ее вызова. Методы хранимых процедур возвращают структуры переданных параметров, но с измененными во время выполнения значениями (например, если передавать в процедуру SI_USERS_PKG.SI_USERS_PUT в качестве значения num_N_USER_ID NULL, то на "выходе" процедуры в качестве значения num_N_USER_ID будет идентификатор созданного абонента).
Для получения выборок из БД следует использовать специальный метод SELECT(query, page_num), где query — SQL-запрос данных из БД, page_num — номер страницы результата (по умолчанию — 1). Для снижения нагрузки на БД выборки делаются постранично, т.е. весь результат запроса разбивается на страницы определенного размера (размер задается в конфиге hid). Если в качестве page_num передан 0, делается выборка без разбиения на страницы (при условии, что это разрешено в конфиге hid).
Метод SELECT возвращает структуру (хэш, словарь) следущего содержания:
Code Block |
---|
{
'RecordsNumber' => RecordsNumber,
'PagesNumber' => PagesNumber,
'SelectResult' => SelectResult,
}
|
RecordsNumber
— количество записей результата выборки;PagesNumber
— количество страниц результата выборки;SelectResult
— список (массив) записей. Каждая запись представляется еще одним списком, элементы которого соответствуют выбираемым полям таблицы. Все числовые поля таблиц из БД представляются в виде строк.
Параметры конфига hid
db select page size
— размер страницы выборки. По умолчанию — 20.db allow unlimited select
— флаг разрешения выборок без ограничения (on
илиoff
). По умолчанию —off
.
Примеры
Физические лица
Получение списка физических лиц
...
Code Block |
---|
SI_PERSONS_PKG.SI_PERSONS_DEL({
'num_N_PERSON_ID' => num_N_PERSON_ID,
})
|
num_N_PERSON_ID
— идентификатор физ. лица.
...
Code Block |
---|
SI_COMPANIES_PKG.SI_COMPANIES_DEL({ 'num_N_COMPANY_ID' => num_N_COMPANY_ID, }) |
num_N_COMPANY_ID
— идентификатор юр. лица.
Абоненты
Получение списка абонентов
Code Block |
---|
SELECT("SELECT * FROM SI_V_USERS_JR") |
Получение информации об абоненте
Code Block |
---|
SELECT("SELECT * FROM SI_V_USERS_JR WHERE N_SUBJECT_ID = <num_N_SUBJECT_ID>") |
num_N_SUBJECT_ID
— идентификатор абонента
Редактирование (создание) абонента
Code Block |
---|
SI_USERS_PKG.SI_USERS_PUT({ num_N_USER_ID => num_N_COMPANYUSER_ID, num_N_BASE_SUBJECT_ID => 712282701, num_N_SUBJ_GROUP_ID => 255664501, vch_VC_CODE => 'uralsky', num_N_SUBJ_STATE_ID => 2011, }) |
num_N_COMPANYUSER_ID
— идентификатор абонента. Если равенNULL
— производится создание, иначе — редактированиеnum_N_BASE_SUBJECT_ID
— идентификатор физ. или юр. лица, к которому добавляется абонентnum_N_SUBJ_GROUP_ID
— идентификатор группы абонентов (представлениеSI_V_SUBJ_GROUPS
)num_N_SUBJ_STATE_ID
— идентификатор состояния СУ (справочникREF_TYPE_Subject_State
, SYS_CONTEXT('CONST', 'SUBJ_STATE_On') == 2011)
Удаление абонента
Code Block |
---|
SI_USERS_PKG.SI_USERS_DEL({ 'num_N_USER_ID' => num_N_USER_ID, }) |
num_N_USER_ID
— идентификатор абонента