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 8 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_DOC_ID = <num_N_DOC_ID>")
  • num_N_DOC_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_CONTRACTS_PKG.SD_CONTRACTS_PUT({
  'num_N_DOC_ID'      => 52481301,
  'num_N_DOC_TYPE_ID' => 1002,
  'dt_D_DOC'          => DATE('11.06.2010', 'DD.MM.YYYY'),
  'vch_VC_DOC_NO'     => 'T0100001',
  'vch_VC_REM'        => 'Тестовый',
  'dt_D_BEGIN'        => DATE('11.06.2010', 'DD.MM.YYYY'),
  'dt_D_END'          => NULL,
})
  • num_N_DOC_TYPE_ID — идентификатор типа договора (справочник REF_TYPE_Document_Type, договор на оказание услуг — SYS_CONTEXT('CONST', 'DOC_TYPE_SubscriberContract') == 1002)

Удаление договора

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_PAY_DAY'           => 1,
  'num_N_LINE_NO'           => 1000000,
  'num_N_QUANT'             => 1,
  'num_N_UNIT_ID'           => 1009,
  'num_N_DOC_ID'            => 712283101,
  'num_N_PAR_SUBJ_GOOD_ID'  => NULL,
  'dt_D_BEGIN'              => DATE('11.06.2010', 'DD.MM.YYYY'),
  'dt_D_END'                => NULL,
})
  • 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_PAY_DAY — расчетный день месяца
  • num_N_LINE_NO — номер строки по порядку при отображении таблицы. Для первой родительской записи — 1000000, для второй родительской — 2000000 и т.д. Для первой дочерней записи первой родительской записи — 1000001, для второй дочерней записи третьей родительской строки — 3000002.
  • num_N_QUANT — количество
  • num_N_UNIT_ID — идентификатор единицы измерения (представление SI_V_UNITS, неопределенно — SYS_CONTEXT('CONST', 'UNIT_Piece') == 2009)
  • num_N_DOC_ID — идентификатор договора
  • num_N_PAR_SUBJ_GOOD_ID — идентификатор родительской подписки (указывается в случае, если добавляется дочерняя строка)

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

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

Лицевые счета

Добавление лицевого счета для абонента

SI_USERS_PKG.CREATE_ACCOUNT({
  'num_N_USER_ID'    => 49979801,
  'num_N_ACCOUNT_ID' => NULL,
})
  • num_N_USER_ID — идентификатор абонента
  • num_N_ACCOUNT_ID — идентификатор созданного лицевого счета

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

SI_SUBJECTS_PKG.SI_SUBJ_ACCOUNTS_PUT({
  'num_N_ACCOUNT_ID'      => num_N_ACCOUNT_ID,
  'num_N_SUBJECT_ID'      => 52480701,
  'num_N_ACCOUNT_TYPE_ID' => 2042,
  'num_N_BANK_ID'         => 100,
  'num_N_CURRENCY_ID'     => 1044,
  'vch_VC_ACCOUNT'        => 'T0100001',
  'num_N_OVERDRAFT'       => 100,
  'dt_D_OVERDRAFT_END'    => DATE('15.06.2010', 'DD.MM.YYYY'),
})
  • num_N_ACCOUNT_ID — идентификатор счета. Если равен NULL — производится создание, иначе — редактирование
  • num_N_SUBJECT_ID — идентификатор СУ (абонента)
  • num_N_ACCOUNT_TYPE_ID — идентификатор типа счета (справочник REF_TYPE_Account_Type, лицевой счет — SYS_CONTEXT('CONST', 'ACC_TYPE_Personal') == 2042)
  • num_N_BANK_ID — идентификатор банка (для реальных счетов) или оператора связи (для лицевых)
  • num_N_CURRENCY_ID — идентификатор валюты (справочник REF_TYPE_Currency, лицевой счет — SYS_CONTEXT('CONST', 'CURR_Ruble') == 1044)
  • vch_VC_ACCOUNT — номер счета
  • num_N_OVERDRAFT — кредитный лимит
  • dt_D_OVERDRAFT_END — дата окончания срока действия кредитного лимита

Удаление счета

SI_SUBJECTS_PKG.SI_SUBJ_ACCOUNTS_DEL({
  num_N_ACCOUNT_ID => 52481101,
})
  • num_N_ACCOUNT_ID — идентификатор счета
  • No labels