Назначение

Плагин 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 возвращает структуру (хэш, словарь) следущего содержания:

{
  'RecordsNumber' => RecordsNumber,
  'PagesNumber'   => PagesNumber,
  'SelectResult'  => SelectResult,
}

Параметры конфига hid

Примеры

Физические лица

Получение списка физических лиц

SELECT("SELECT * FROM SI_V_PERSONS_JR")

Получение информации о физическом лице

SELECT("SELECT * FROM SI_V_PERSONS_JR WHERE 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,
})

Удаление физического лица

SI_PERSONS_PKG.SI_PERSONS_DEL({
  'num_N_PERSON_ID' => num_N_PERSON_ID,
})

Юридические лица

Получение списка юридических лиц

SELECT("SELECT * FROM SI_V_COMPANIES_JR")

Получение информации о юридическом лице

SELECT("SELECT * FROM SI_V_COMPANIES_JR WHERE N_COMPANY_ID = <num_N_COMPANY_ID>")

Редактирование (создание) юридического лица

SI_COMPANIES_PKG.SI_COMPANIES_PUT({
  'num_N_COMPANY_ID'    => num_N_COMPANY_ID,
  'num_N_OPF_ID'        => 1041,
  'num_N_REGION_ID'     => 21301,
  'vch_VC_CODE'         => 'Вектор',
  'vch_VC_INN'          => '1234567891',
  'vch_VC_OGRN'         => '12345',
  'num_N_SUBJ_STATE_ID' => 2011,
  'num_N_SUBJ_GROUP_ID' => 196401,
})

Удаление юридического лица

SI_COMPANIES_PKG.SI_COMPANIES_DEL({
  'num_N_COMPANY_ID' => num_N_COMPANY_ID,
})

Абоненты

Получение списка абонентов

SELECT("SELECT * FROM SI_V_USERS_JR")

Получение информации об абоненте

SELECT("SELECT * FROM SI_V_USERS_JR WHERE N_SUBJECT_ID = <num_N_SUBJECT_ID>")

Редактирование (создание) абонента

SI_USERS_PKG.SI_USERS_PUT({
  'num_N_USER_ID'         => num_N_USER_ID,
  'num_N_BASE_SUBJECT_ID' => 712282701,
  'num_N_SUBJ_GROUP_ID'   => 255664501,
  'vch_VC_CODE'           => 'uralsky',
  'num_N_SUBJ_STATE_ID'   => 2011,
})

Удаление абонента

SI_USERS_PKG.SI_USERS_DEL({
  'num_N_USER_ID' => num_N_USER_ID,
})

Договоры

Получение информации о договорах с абонентами

SELECT("SELECT * FROM SI_V_USER_CONTRACTS")

Получение информации о договорах с абонентом

SELECT("SELECT * FROM SI_V_USER_CONTRACTS WHERE N_SUBJECT_ID = <num_N_SUBJECT_ID>")

Добавление договора с абонентом

SI_USERS_PKG.CREATE_CONTRACT({
  'num_N_USER_ID'          => 49979801,
  'num_N_BASE_CONTRACT_ID' => 40174101,
  'num_N_CONTRACT_ID'      => NULL,
})

Удаление договора с абонентом

SD_DOCUMENTS_PKG.SD_DOCUMENTS_DEL({
  'num_N_DOC_ID' => num_N_DOC_ID,
})

Редактирование (создание) подписки на услуги

На примере тарифного плана.

SI_USERS_PKG.SI_USER_GOODS_PUT({
  'num_N_SUBJ_GOOD_ID'      => num_N_SUBJ_GOOD_ID,
  'num_N_GOOD_ID'           => 22165301,
  'num_N_SUBJ_GOOD_TYPE_ID' => 1031,
  'num_N_SUBJECT_ID'        => 712282901,
  'num_N_ACCOUNT_ID'        => 712283801,
  'num_N_OBJECT_ID'         => 712284401,
  'num_N_LINE_NO'           => 1000000,
  'num_N_DOC_ID'            => 712283101,
  'num_N_UNIT_ID'           => 2009,
})

Удаление подписки на услуги

SI_USERS_PKG.SI_USER_GOODS_PUT({
  'num_N_SUBJ_GOOD_ID' => num_N_SUBJ_GOOD_ID,
})