Плагин db в hid предназначен для удаленной работы с ядром АСР "Гидра". Он позволяет выполнять хранимые процедуры и делать SQL-выборки из БД без установки непосредственного соединения с ней.
Все хранимые процедуры СУБД отображаются в названия методов напрямую (например, для процедуры 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 возвращает структуру (хэш, словарь) следущего содержания:
{ 'RecordsNumber' => RecordsNumber, 'PagesNumber' => PagesNumber, 'SelectResult' => SelectResult, } |
RecordsNumber
— количество записей результата выборки;PagesNumber
— количество страниц результата выборки;SelectResult
— список (массив) записей. Каждая запись представляется еще одним списком, элементы которого соответствуют выбираемым полям таблицы. Все числовые поля таблиц из БД представляются в виде строк.db select page size
— размер страницы выборки. По умолчанию — 20.db allow unlimited select
— флаг разрешения выборок без ограничения (on
или off
). По умолчанию — off
.SELECT("SELECT * FROM SI_V_COMPANIES_JR WHERE N_COMPANY_ID = <num_N_COMPANY_ID>") |
num_N_COMPANY_ID
— идентификатор юр. лицаSI_PERSONS_PKG.SI_PERSONS_DEL({ 'num_N_PERSON_ID' => num_N_PERSON_ID, }) |
num_N_PERSON_ID
— идентификатор физ. лицаSI_PERSONS_PKG.SI_PERSONS_PUT({ 'num_N_PERSON_ID' => num_N_PERSON_ID, 'vch_VC_SURNAME' => 'Шварценгольд', 'vch_VC_SECOND_NAME' => 'Викторович', 'ch_C_SEX' => 'M', 'num_N_SUBJ_GROUP_ID' => 49001, 'vch_VC_INN' => '1234567891', 'num_N_DOC_AUTH_TYPE_ID' => 2015, 'vch_VC_DOC_SERIAL' => '01 06', 'vch_VC_DOC_NO' => '489635', 'dt_D_DOC' => DATE('24.01.2009', 'DD.MM.YYYY'), 'vch_VC_DOCUMENT' => 'Отделением по району Царицыно ОУФМС России по г. Москве в ЮАО', 'dt_D_BIRTH' => DATE('20.03.1955', 'DD.MM.YYYY'), 'vch_VC_BIRTH_PLACE' => 'г. Москва', 'num_N_SUBJ_STATE_ID' => 2011, 'num_N_CITIZENSHIP_ID' => 21101, }) |
num_N_PERSON_ID
— идентификатор физ. лица. Если равен NULL
— производится создание, иначе — редактированиеnum_N_SUBJ_GROUP_ID
— идентификатор группы физ. лиц (представление SI_V_SUBJ_GROUPS
)num_N_DOC_AUTH_TYPE_ID
— идентификатор типа документа, удостоверяющего личность (справочник REF_TYPE_Document
)num_N_SUBJ_STATE_ID
— идентификатор состояния СУ (справочник REF_TYPE_Subject_State
, SYS_CONTEXT('CONST', 'SUBJ_STATE_On') == 2011)num_N_CITIZENSHIP_ID
— идентификатор региона гражданстваОзнакомиться со многими другими примерами работы с БД вы можете в разделе «Примеры работы с БД (Офис оператора связи)». Для использования этих примеров в работе с плагином db агента hid вам достаточно привести код PL/SQL к формату, описанному в примерах выше.
Можно выполнять запросы к HID, используя XML-RPC:
curl -d '<?xml version="1.0"?><methodCall><methodName>SELECT</methodName><params><param><value><string>SELECT * FROM SI_V_USERS WHERE N_SUBJECT_ID = 302</string></value></param></params></methodCall>' 'http://hydra:pass@127.0.0.1:10080/xml-rpc/db' |
<?xml version='1.0'?> <methodResponse> <params> <param> <value> <struct> <member> <name>RecordsNumber</name> <value> <string>1</string> </value> </member> <member> <name>PagesNumber</name> <value> <string>1</string> </value> </member> <member> <name>SelectResult</name> <value> <array> <data> <value> <array> <data> <value> <string>1</string> </value> <value> <string>302</string> </value> <value> <string>302</string> </value> <value> <string>2001</string> </value> <value> <string>301</string> </value> <value> <string>Миграторов Мигратор1 Миграторович1</string> </value> <value> <string>18001</string> </value> <value> <nil/> </value> <value> <string>5011</string> </value> <value> <nil/> </value> <value> <string>Миграторов М. М.</string> </value> <value> <string>Migrator</string> </value> <value> <string>Миграторов М. М.</string> </value> <value> <string>Migrator</string> </value> <value> <string>MIGRATOR</string> </value> <value> <string>МИГРАТОРОВ М. М.</string> </value> <value> <nil/> </value> <value> <nil/> </value> <value> <dateTime.iso8601>20090617T17:18:39</dateTime.iso8601> </value> <value> <nil/> </value> <value> <array> <data> <value> <string>системный_пользователь</string> </value> <value> <string>не_выгружать_пл</string> </value> </data> </array> </value> <value> <string>системный_пользователь, не_выгружать_пл</string> </value> <value> <string>Создан при инсталляции</string> </value> <value> <string>100</string> </value> <value> <nil/> </value> <value> <nil/> </value> <value> <nil/> </value> <value> <string>50853901</string> </value> <value> <array> <data> <value> <int>50853901</int> </value> </data> </array> </value> <value> <string>Системные пользователи</string> </value> <value> <string>51845401</string> </value> <value> <dateTime.iso8601>20250521T11:12:34</dateTime.iso8601> </value> <value> <string>4624499330801</string> </value> </data> </array> </value> </data> </array> </value> </member> </struct> </value> </param> </params> </methodResponse> |