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 5 Next »

Назначение

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

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

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

Примеры

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

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

SELECT("SELECT * FROM SI_V_PERSONS_JR")

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

SELECT("SELECT * FROM SI_V_PERSONS_JR WHERE 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 — идентификатор региона гражданства

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

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")

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

SELECT("SELECT * FROM SI_V_COMPANIES_JR WHERE N_COMPANY_ID = <num_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,
})
  • num_N_COMPANY_ID — идентификатор юр. лица. Если равен NULL — производится создание, иначе — редактирование
  • num_N_OPF_ID — идентификатор ОПФ (справочник REF_TYPE_OPF)
  • num_N_REGION_ID — идентификатор региона
  • num_N_SUBJ_STATE_ID — идентификатор состояния СУ (справочник REF_TYPE_Subject_State, SYS_CONTEXT('CONST', 'SUBJ_STATE_On') == 2011)
  • num_N_SUBJ_GROUP_ID — идентификатор группы юр. лиц (представление SI_V_SUBJ_GROUPS)

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

SI_COMPANIES_PKG.SI_COMPANIES_DEL({
  'num_N_COMPANY_ID' => 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>")
  • 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,
})
  • num_N_USER_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)

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

SI_USERS_PKG.SI_USERS_DEL({
  'num_N_USER_ID' => 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>")
  • 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,
})
  • num_N_USER_ID — идентификатор абонента
  • num_N_BASE_CONTRACT_ID — идентификатор базового договора (представление SD_V_DOCUMENTS_JR)
  • num_N_CONTRACT_ID — идентификатор созданного договора

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

SD_DOCUMENTS_PKG.SD_DOCUMENTS_DEL({
  'num_N_DOC_ID' => 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,
})
  • num_N_SUBJ_GOOD_ID — идентификатор подписки на услуги. Если равен NULL — производится создание, иначе — редактирование
  • num_N_GOOD_ID — идентификатор тарифного плана или услуги из номенклатуры (представление SR_V_GOODS)
  • num_N_SUBJ_GOOD_TYPE_ID — идентификатор типа подписки (справочник REF_TYPE_Subj_Good_Type, тарифный план — SYS_CONTEXT('CONST', 'GOOD_SUBJ_Tariff') == 1031, услуга — SYS_CONTEXT('CONST', 'GOOD_SUBJ_Periodic') == 2031)
  • num_N_SUBJECT_ID — идентификатор абонента
  • num_N_ACCOUNT_ID — идентификатор лицевого счета
  • num_N_OBJECT_ID — идентификатор оборудования
  • num_N_LINE_NO — номер строки по порядку при отображении таблицы. Для первой родительской записи — 1000000, для второй родительской — 2000000 и т.д.
  • num_N_DOC_ID — идентификатор договора
  • num_N_UNIT_ID — идентификатор единицы измерения (представление SI_V_UNITS, неопределенно — SYS_CONTEXT('CONST', 'UNIT_Unknown') == 2009)

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

SI_USERS_PKG.SI_USER_GOODS_PUT({
  'num_N_SUBJ_GOOD_ID' => num_N_SUBJ_GOOD_ID,
})
  • num_N_SUBJ_GOOD_ID — идентификатор подписки на услуги
  • No labels