Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

Назначение

Плагин 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 — список (массив) записей. Каждая запись представляется еще одним списком, элементы которого соответствуют выбираемым полям таблицы. Все числовые поля таблиц из БД представляются в виде строк.

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

  • db select page size — размер страницы выборки. По умолчанию — 20.
  • db allow unlimited select — флаг разрешения выборок без ограничения (on или off). По умолчанию — off.

Примеры

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

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 — идентификатор региона гражданства

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

SI_PERSONS_PKG.SI_PERSONS_DEL({
  'num_N_PERSON_ID' => num_N_PERSON_ID,
})
  • num_N_PERSON_ID — идентификатор физ. лица.

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

SELECT("SELECT * FROM SI_V_COMPANIES_JR WHERE N_COMPANY_ID = <num_N_COMPANY_ID>")
  • num_N_COMPANY_ID — идентификатор юр. лица.

Услуги абонента

Список текущих услуг

SELECT("SELECT * FROM TABLE(SI_USERS_PKG_S.USERS_CURRENT_SERVS_LIST(<num_N_USER_ID>, 1))")
  • num_N_USER_ID — идентификатор абонента

Список оказанных услуг

SELECT("SELECT * FROM TABLE(SI_USERS_PKG_S.USERS_BILLED_SERVS_LIST(<num_N_USER_ID>, TO_DATE('<dt_D_BEGIN>', 'DD.MM.YYYY HH24:MI:SS'), TO_DATE('<dt_D_END>', 'DD.MM.YYYY HH24:MI:SS'), 1))")
  • num_N_USER_ID — идентификатор абонента
  • dt_D_BEGIN — дата начала периода, за который получается список оказанных услуг
  • dt_D_END — дата окончания периода, за который получается список оказанных услуг

Получение информации о текущей услуге

SELECT("SELECT * FROM TABLE(SI_USERS_PKG_S.USERS_CURRENT_SERVS_LIST(<num_N_USER_ID>, 1)) WHERE N_GOOD_ID = <num_N_GOOD_ID>")
  • num_N_USER_ID — идентификатор абонента
  • num_N_GOOD_ID — идентификатор услуги из номенклатуры

Изменение состояния услуги доступа

SI_USERS_PKG.ACCESS_SERV_CHG_STATE({
  'num_N_GOOD_ID'        => 40216501,
  'num_N_PARENT_GOOD_ID' => 40161101,
  'num_N_ACCOUNT_ID'     => 52481101,
  'num_N_OBJECT_ID'      => 52482001,
  'num_N_INVOICE_ID'     => 52485101,
  'b_Enable'             => 1,
})
  • num_N_GOOD_ID — идентификатор услуги доступа из номенклатуры
  • num_N_PARENT_GOOD_ID — идентификатор основной услуги (тарифного плана) из номенклатуры
  • num_N_ACCOUNT_ID — идентификатор лицевого счета абонента
  • num_N_OBJECT_ID — идентификатор оборудования
  • num_N_INVOICE_ID — идентификатор инвойса
  • b_Enable — флаг включения (значение 1) или выключения (значение 0) услуги

Получение детализации по трафику

Получение детализации по доп. услугам

SELECT("SELECT * FROM SI_V_USER_ADDSERVS WHERE N_DOC_ID = <num_N_DOC_ID> AND N_PARENT_GOOD_ID = <num_N_GOOD_ID>")
  • num_N_DOC_ID — идентификатор абонента
  • num_N_GOOD_ID — идентификатор услуги (тарифного плана) из номенклатуры

Инвойсы

Список инвойсов абонента

SELECT("SELECT D.*
        FROM   SD_V_INVOICES_JR D, SI_V_DOC_SUBJECTS_SIMPLE S
        WHERE  S.N_DOC_ID = D.N_DOC_ID
        AND    S.N_DOC_ROLE_ID = SYS_CONTEXT('CONST', 'SUBJ_ROLE_Receiver')
        AND    S.N_SUBJECT_ID = <num_N_USER_ID>")
  • num_N_USER_ID — идентификатор абонента

Получение заголовка инвойса

SELECT("SELECT * FROM SD_V_INVOICES_T WHERE N_DOC_ID = <num_N_DOC_ID>")
  • num_N_DOC_ID — идентификатор инвойса

Получение состава инвойса

SELECT("SELECT * FROM SD_V_INVOICES_C WHERE N_DOC_ID = <num_N_DOC_ID>")
  • num_N_DOC_ID — идентификатор инвойса

Изменение состояния инвойса

SD_DOCUMENTS_CHANGE_STATE(
  'num_N_DOC_ID'           => 52485101,
  'num_N_New_DOC_STATE_ID' => 4003,
})
  • num_N_DOC_ID — идентификатор инвойса
  • dt_D_OPER — идентификатор состояния документа (справочник REF_TYPE_Document_State, лицевой счет — SYS_CONTEXT('CONST', 'DOC_STATE_Actual') == 4003)

Досрочное закрытие инвойса

SI_USERS_PKG.CHANGE_INVOICE_PERIOD({
  'num_N_DOC_ID' => 52485101,
  'dt_D_OPER'    => DATE('11.06.2010 23:11:02', 'DD.MM.YYYY HH24:MI:SS')
})
  • num_N_DOC_ID — идентификатор инвойса
  • dt_D_OPER — время закрытия. Если не передано, используется текущее время системы

Подписки на службы

Получение информации о подписках на службы

SELECT("SELECT * FROM SI_V_SUBJ_SERVICES WHERE N_SUBJ_SERV_TYPE_ID = SYS_CONTEXT('CONST','SUBJ_SERV_ServiceUse')")

Получение информации о подписках на службы абонента

SELECT("SELECT * FROM SI_V_SUBJ_SERVICES WHERE N_SUBJ_SERV_TYPE_ID = SYS_CONTEXT('CONST','SUBJ_SERV_ServiceUse') AND N_SUBJECT_ID = <num_N_USER_ID>")
  • num_N_USER_ID — идентификатор абонента

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

SELECT("SELECT * FROM SI_V_SUBJ_SERVICES WHERE N_SUBJ_SERV_TYPE_ID = SYS_CONTEXT('CONST','SUBJ_SERV_ServiceUse') AND N_SUBJ_SERV_ID = <num_N_SUBJ_SERV_ID>")
  • num_N_SUBJ_SERV_ID — идентификатор подписки на службу

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

SI_SUBJECTS_PKG.SI_SUBJ_SERVICES_PUT({
  'num_N_SUBJ_SERV_ID'      => num_N_SUBJ_SERV_ID,
  'num_N_SUBJ_SERV_TYPE_ID' => 3066,
  'num_N_SUBJECT_ID'        => 52480701,
  'num_N_SERVICE_ID'        => 40176501,
  'num_N_OBJECT_ID'         => 54154801,
  'num_N_AUTH_TYPE_ID'      => 1019,
  'vch_VC_LOGIN'            => 'T0100001',
})
  • num_N_SUBJ_SERV_ID — идентификатор подписки на службы. Если равен NULL — производится создание, иначе — редактирование
  • num_N_SUBJ_SERV_TYPE_ID — идентификатор типа привязки к службе (SYS_CONTEXT('CONST', 'SUBJ_SERV_ServiceUse') == 3066)
  • num_N_SUBJECT_ID — идентификатор абонента
  • num_N_SERVICE_ID — идентификатор сетевой службы
  • num_N_OBJECT_ID — идентификатор компонента сетевой службы
  • num_N_AUTH_TYPE_ID — идентификатор типа авторизации (SYS_CONTEXT('CONST', 'AUTH_TYPE_LoginPass') == 1019)

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

SI_SUBJECTS_PKG.SI_SUBJ_SERVICES_DEL({
  'num_N_SUBJ_SERV_ID'      => num_N_SUBJ_SERV_ID,
})
  • num_N_SUBJ_SERV_ID — идентификатор подписки на службы

Изменение пароля на подписку к службе

SI_SUBJECTS_PKG.SI_SUBJ_SERVICES_CHG_PASS({
  'num_N_SUBJ_SERV_ID' => 42231101,
  'vch_VC_OLD_PASS'    => NULL,
  'vch_VC_NEW_PASS'    => 'q123',
})
  • num_N_SUBJ_SERV_ID — идентификатор подписки на службе
  • vch_VC_OLD_PASS — старый пароль. Для новой подписки — NULL
  • vch_VC_NEW_PASS — новый пароль

Доступ к приложениям

Получение информации о доступе к приложениям

SELECT("SELECT * FROM SS_V_USERS_APP_BINDS")

Получение информации о доступе к приложениям по абоненту

SELECT("SELECT * FROM SS_V_USERS_APP_BINDS WHERE N_USER_ID = <num_N_USER_ID>")
  • num_N_USER_ID — идентификатор абонента

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

SELECT("SELECT * FROM SS_V_USERS_APP_BINDS WHERE N_SUBJ_SERV_ID = <num_N_SUBJ_SERV_ID>")
  • num_N_SUBJ_SERV_ID — идентификатор подписки на приложение

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

SI_SUBJECTS_PKG.SI_SUBJ_SERVICES_PUT({
  'num_N_SUBJ_SERV_ID'      => num_N_SUBJ_SERV_ID,
  'num_N_SUBJ_SERV_TYPE_ID' => 3066,
  'num_N_SUBJECT_ID'        => 52480701,
  'num_N_SERVICE_ID'        => 1005,
  'num_N_AUTH_TYPE_ID'      => 1019,
  'vch_VC_LOGIN'            => 'uralsky',
})
  • num_N_SUBJ_SERV_ID — идентификатор подписки на приложение. Если равен NULL — производится создание, иначе — редактирование
  • num_N_SUBJ_SERV_TYPE_ID — идентификатор типа привязки к приложению (SYS_CONTEXT('CONST', 'SUBJ_SERV_AppAccess') == 1066)
  • num_N_SUBJECT_ID — идентификатор абонента
  • num_N_SERVICE_ID — идентификатор приложения (выборка из SS_V_AVAILABLE_SERV_APPS, АРМ Личный кабинет пользователя — 1005)
  • num_N_AUTH_TYPE_ID — идентификатор типа авторизации (SYS_CONTEXT('CONST', 'AUTH_TYPE_LoginPass') == 1019)

Удаление доступа к приложению

SI_SUBJECTS_PKG.SI_SUBJ_SERVICES_DEL({
  'num_N_SUBJ_SERV_ID'      => num_N_SUBJ_SERV_ID,
})
  • num_N_SUBJ_SERV_ID — идентификатор подписки на приложение

Изменение пароля на доступ к приложению

SI_SUBJECTS_PKG.SI_SUBJ_SERVICES_CHG_PASS({
  'num_N_SUBJ_SERV_ID' => 42231101,
  'vch_VC_OLD_PASS'    => NULL,
  'vch_VC_NEW_PASS'    => 'q123',
})
  • num_N_SUBJ_SERV_ID — идентификатор подписки на приложение
  • vch_VC_OLD_PASS — старый пароль. Для новой подписки — NULL
  • vch_VC_NEW_PASS — новый пароль
  • No labels