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

Назначение

Плагин 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.

Примеры

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

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

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

SI_PERSONS_PKG.SI_PERSONS_DEL({
  'num_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 — идентификатор региона гражданства

Ознакомиться со многими другими примерами работы с БД вы можете в разделе  «Примеры работы с БД (Офис оператора связи)». Для использования этих примеров в работе с плагином db агента hid вам достаточно привести код PL/SQL к формату, описанному в примерах выше.

XML-запросы

Можно выполнять запросы к HID, используя XML-RPC:

GET-запрос
curl -d '<?xml version="1.0"?><methodCall><methodName>SELECT</methodName><params><param><value><string>SELECT * FROM SI_V_USERS WHERE N_SUBJECT_ID = 302</string></value></param></params></methodCall>' 'http://hydra:pass@127.0.0.1:10080/xml-rpc/db'
результат
<?xml version='1.0'?>
<methodResponse>
    <params>
        <param>
            <value>
                <struct>
                    <member>
                        <name>RecordsNumber</name>
                        <value>
                            <string>1</string>
                        </value>
                    </member>
                    <member>
                        <name>PagesNumber</name>
                        <value>
                            <string>1</string>
                        </value>
                    </member>
                    <member>
                        <name>SelectResult</name>
                        <value>
                            <array>
                                <data>
                                    <value>
                                        <array>
                                            <data>
                                                <value>
                                                    <string>1</string>
                                                </value>
                                                <value>
                                                    <string>302</string>
                                                </value>
                                                <value>
                                                    <string>302</string>
                                                </value>
                                                <value>
                                                    <string>2001</string>
                                                </value>
                                                <value>
                                                    <string>301</string>
                                                </value>
                                                <value>
                                                    <string>Миграторов Мигратор1 Миграторович1</string>
                                                </value>
                                                <value>
                                                    <string>18001</string>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <string>5011</string>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <string>Миграторов М. М.</string>
                                                </value>
                                                <value>
                                                    <string>Migrator</string>
                                                </value>
                                                <value>
                                                    <string>Миграторов М. М.</string>
                                                </value>
                                                <value>
                                                    <string>Migrator</string>
                                                </value>
                                                <value>
                                                    <string>MIGRATOR</string>
                                                </value>
                                                <value>
                                                    <string>МИГРАТОРОВ М. М.</string>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <dateTime.iso8601>20090617T17:18:39</dateTime.iso8601>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <array>
                                                        <data>
                                                            <value>
                                                                <string>системный_пользователь</string>
                                                            </value>
                                                            <value>
                                                                <string>не_выгружать_пл</string>
                                                            </value>
                                                        </data>
                                                    </array>
                                                </value>
                                                <value>
                                                    <string>системный_пользователь, не_выгружать_пл</string>
                                                </value>
                                                <value>
                                                    <string>Создан при инсталляции</string>
                                                </value>
                                                <value>
                                                    <string>100</string>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <nil/>
                                                </value>
                                                <value>
                                                    <string>50853901</string>
                                                </value>
                                                <value>
                                                    <array>
                                                        <data>
                                                            <value>
                                                                <int>50853901</int>
                                                            </value>
                                                        </data>
                                                    </array>
                                                </value>
                                                <value>
                                                    <string>Системные пользователи</string>
                                                </value>
                                                <value>
                                                    <string>51845401</string>
                                                </value>
                                                <value>
                                                    <dateTime.iso8601>20250521T11:12:34</dateTime.iso8601>
                                                </value>
                                                <value>
                                                    <string>4624499330801</string>
                                                </value>
                                            </data>
                                        </array>
                                    </value>
                                </data>
                            </array>
                        </value>
                    </member>
                </struct>
            </value>
        </param>
    </params>
</methodResponse>



  • No labels