Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Назначение

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

Code Block

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

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

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

Примеры

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

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

...

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

...

Code Block
SI_COMPANIES_PKG.SI_COMPANIES_DEL({
  'num_N_COMPANY_ID' => num_N_COMPANY_ID,
})
  • num_N_COMPANY_ID — идентификатор юр. лица.

Абоненты

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

Code Block
SELECT("SELECT * FROM SI_V_USERS_JR")

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

Code Block

SELECT("SELECT * FROM SI_V_USERS_JR WHERE N_SUBJECT_ID = <num_N_SUBJECT_ID>")
  • num_N_SUBJECT_ID — идентификатор абонента

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

Code Block

SI_USERS_PKG.SI_USERS_PUT({
  num_N_USER_ID         => num_N_COMPANYUSER_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_COMPANYUSER_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)

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

Code Block

SI_USERS_PKG.SI_USERS_DEL({
  'num_N_USER_ID' => num_N_USER_ID,
})
  • num_N_USER_ID — идентификатор абонента