Новые атрибуты класса - функции обратной связи, редактирование класса оборудования, кнопки обновление списков файлов и моделей класса

This commit is contained in:
Mikhail Chechnev 2024-11-15 15:17:45 +03:00
parent 4c57e82ba9
commit add981dff7
8 changed files with 664 additions and 122 deletions

View File

@ -31,8 +31,12 @@ create or replace package UDO_PKG_EQUIPDS as
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
); );
@ -62,11 +66,34 @@ create or replace package UDO_PKG_EQUIPDS as
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
); );
/* Клиентское исправление "Выборки данных оборудования (классы оборудования)" */
procedure CM_UPD
(
NRN in number, -- Регистрационный номер
SEQOBJKIND in varchar2, -- Класс оборудования
SDICMUNTS in varchar2, -- Единица измерения выборки
SUSERPROCS_DATA in varchar2, -- Процедура формирования
SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2 -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
);
/* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */ /* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */
procedure CM_DEL procedure CM_DEL
( (
@ -292,8 +319,12 @@ create or replace package body UDO_PKG_EQUIPDS as
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
) )
@ -320,10 +351,18 @@ create or replace package body UDO_PKG_EQUIPDS as
P_EXCEPTION(0, P_EXCEPTION(0,
'Не указана функция обмена для передачи внешней системе.'); 'Не указана функция обмена для передачи внешней системе.');
end if; end if;
if ((SEXSSERVICE_SEND_MDCB is null) or (SEXSSERVICEFN_SEND_MDCB is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для приёма обратной связи о передече внешней системе.');
end if;
if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then
P_EXCEPTION(0, P_EXCEPTION(0,
'Не указана функция обмена для обработки внешней системой.'); 'Не указана функция обмена для обработки внешней системой.');
end if; end if;
if ((SEXSSERVICE_SEND_RQCB is null) or (SEXSSERVICEFN_SEND_RQCB is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для приёма обратной связи об обработке внешней системой.');
end if;
/* Проверим права доступа */ /* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDS', SACTION => 'UDO_EQUIPDS_MAKE'); UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDS', SACTION => 'UDO_EQUIPDS_MAKE');
/* Проверим наличие такой выборки */ /* Проверим наличие такой выборки */
@ -342,17 +381,21 @@ create or replace package body UDO_PKG_EQUIPDS as
/* Класса оборудования в выборке нет */ /* Класса оборудования в выборке нет */
if (NEQUIPDSCM is null) then if (NEQUIPDSCM is null) then
/* Добавляем запись класса оборудования */ /* Добавляем запись класса оборудования */
CM_INS(NPRN => NEQUIPDS, CM_INS(NPRN => NEQUIPDS,
SEQOBJKIND => SEQOBJKIND, SEQOBJKIND => SEQOBJKIND,
SDICMUNTS => SDICMUNTS, SDICMUNTS => SDICMUNTS,
SUSERPROCS_DATA => SUSERPROCS_DATA, SUSERPROCS_DATA => SUSERPROCS_DATA,
SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD,
SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD,
SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD,
SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD,
SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, SEXSSERVICE_SEND_MDCB => SEXSSERVICE_SEND_MDCB,
SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, SEXSSERVICEFN_SEND_MDCB => SEXSSERVICEFN_SEND_MDCB,
NRN => NEQUIPDSCM); SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ,
SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ,
SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB,
SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB,
NRN => NEQUIPDSCM);
end if; end if;
end MAKE; end MAKE;
@ -373,11 +416,20 @@ create or replace package body UDO_PKG_EQUIPDS as
NCUR := PKG_XMAKE.OPEN_CURSOR(); NCUR := PKG_XMAKE.OPEN_CURSOR();
/* Обращаемся к данным класса оборудования */ /* Обращаемся к данным класса оборудования */
for C in (select T.RN NRN, for C in (select T.RN NRN,
FORMAT_HIER_NAME(null, null, OK.FULLCODE) SSEQOBJKIND,
OK.NAME SNAME, OK.NAME SNAME,
DM.MEAS_MNEMO SDICMUNTS,
UP.CODE SUSERPROCS_DATA, UP.CODE SUSERPROCS_DATA,
SU.CODE || '/' || SFU.CODE SEXSSERVICE_UPLOAD, SU.CODE SEXSSERVICE_UPLOAD,
SMD.CODE || '/' || SFMD.CODE SEXSSERVICE_SEND_MD, SFU.CODE SEXSSERVICEFN_UPLOAD,
SRQ.CODE || '/' || SFRQ.CODE SEXSSERVICE_SEND_RQ SMD.CODE SEXSSERVICE_SEND_MD,
SFMD.CODE SEXSSERVICEFN_SEND_MD,
SMDCB.CODE SEXSSERVICE_SEND_MDCB,
SFMDCB.CODE SEXSSERVICEFN_SEND_MDCB,
SRQ.CODE SEXSSERVICE_SEND_RQ,
SFRQ.CODE SEXSSERVICEFN_SEND_RQ,
SRQCB.CODE SEXSSERVICE_SEND_RQCB,
SFRQCB.CODE SEXSSERVICEFN_SEND_RQCB
from UDO_T_EQUIPDSCM T, from UDO_T_EQUIPDSCM T,
EQOBJKIND OK, EQOBJKIND OK,
USERPROCS UP, USERPROCS UP,
@ -385,8 +437,13 @@ create or replace package body UDO_PKG_EQUIPDS as
EXSSERVICEFN SFU, EXSSERVICEFN SFU,
EXSSERVICE SMD, EXSSERVICE SMD,
EXSSERVICEFN SFMD, EXSSERVICEFN SFMD,
EXSSERVICE SMDCB,
EXSSERVICEFN SFMDCB,
EXSSERVICE SRQ, EXSSERVICE SRQ,
EXSSERVICEFN SFRQ EXSSERVICEFN SFRQ,
EXSSERVICE SRQCB,
EXSSERVICEFN SFRQCB,
DICMUNTS DM
where T.RN = NEQUIPDSCM where T.RN = NEQUIPDSCM
and T.EQOBJKIND = OK.RN and T.EQOBJKIND = OK.RN
and T.USERPROCS_DATA = UP.RN and T.USERPROCS_DATA = UP.RN
@ -394,8 +451,13 @@ create or replace package body UDO_PKG_EQUIPDS as
and SFU.PRN = SU.RN and SFU.PRN = SU.RN
and T.EXSSERVICEFN_SEND_MD = SFMD.RN and T.EXSSERVICEFN_SEND_MD = SFMD.RN
and SFMD.PRN = SMD.RN and SFMD.PRN = SMD.RN
and T.EXSSERVICEFN_SEND_MDCB = SFMDCB.RN
and SFMDCB.PRN = SMDCB.RN
and T.EXSSERVICEFN_SEND_RQ = SFRQ.RN and T.EXSSERVICEFN_SEND_RQ = SFRQ.RN
and SFRQ.PRN = SRQ.RN) and SFRQ.PRN = SRQ.RN
and T.EXSSERVICEFN_SEND_RQCB = SFRQCB.RN
and SFRQCB.PRN = SRQCB.RN
and T.DICMUNTS = DM.RN)
loop loop
/* Собираем карточку класса оборудования */ /* Собираем карточку класса оборудования */
XEQUIPDSCM := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, XEQUIPDSCM := PKG_XMAKE.ELEMENT(ICURSOR => NCUR,
@ -405,20 +467,47 @@ create or replace package body UDO_PKG_EQUIPDS as
SNAME => 'NRN', SNAME => 'NRN',
SVALUE => C.NRN), SVALUE => C.NRN),
RATTRIBUTE01 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, RATTRIBUTE01 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SSEQOBJKIND',
SVALUE => C.SSEQOBJKIND),
RATTRIBUTE02 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SNAME', SNAME => 'SNAME',
SVALUE => C.SNAME), SVALUE => C.SNAME),
RATTRIBUTE02 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, RATTRIBUTE03 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SDICMUNTS',
SVALUE => C.SDICMUNTS),
RATTRIBUTE04 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SUSERPROCS_DATA', SNAME => 'SUSERPROCS_DATA',
SVALUE => C.SUSERPROCS_DATA), SVALUE => C.SUSERPROCS_DATA),
RATTRIBUTE03 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, RATTRIBUTE05 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_UPLOAD', SNAME => 'SEXSSERVICE_UPLOAD',
SVALUE => C.SEXSSERVICE_UPLOAD), SVALUE => C.SEXSSERVICE_UPLOAD),
RATTRIBUTE04 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, RATTRIBUTE06 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICEFN_UPLOAD',
SVALUE => C.SEXSSERVICEFN_UPLOAD),
RATTRIBUTE07 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_SEND_MD', SNAME => 'SEXSSERVICE_SEND_MD',
SVALUE => C.SEXSSERVICE_SEND_MD), SVALUE => C.SEXSSERVICE_SEND_MD),
RATTRIBUTE05 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, RATTRIBUTE08 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICEFN_SEND_MD',
SVALUE => C.SEXSSERVICEFN_SEND_MD),
RATTRIBUTE09 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_SEND_MDCB',
SVALUE => C.SEXSSERVICE_SEND_MDCB),
RATTRIBUTE10 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICEFN_SEND_MDCB',
SVALUE => C.SEXSSERVICEFN_SEND_MDCB),
RATTRIBUTE11 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_SEND_RQ', SNAME => 'SEXSSERVICE_SEND_RQ',
SVALUE => C.SEXSSERVICE_SEND_RQ))); SVALUE => C.SEXSSERVICE_SEND_RQ),
RATTRIBUTE12 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICEFN_SEND_RQ',
SVALUE => C.SEXSSERVICEFN_SEND_RQ),
RATTRIBUTE13 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_SEND_RQCB',
SVALUE => C.SEXSSERVICE_SEND_RQCB),
RATTRIBUTE14 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICEFN_SEND_RQCB',
SVALUE => C.SEXSSERVICEFN_SEND_RQCB)));
end loop; end loop;
/* Формируем XML-представление ответа */ /* Формируем XML-представление ответа */
XDOC := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, SNAME => 'XDATA', RNODE00 => XEQUIPDSCM); XDOC := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, SNAME => 'XDATA', RNODE00 => XEQUIPDSCM);
@ -527,8 +616,12 @@ create or replace package body UDO_PKG_EQUIPDS as
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
) )
is is
@ -538,7 +631,9 @@ create or replace package body UDO_PKG_EQUIPDS as
NUSERPROCS_DATA PKG_STD.TREF; -- Рег. номер процедуры формирования NUSERPROCS_DATA PKG_STD.TREF; -- Рег. номер процедуры формирования
NEXSSERVICEFN_UPLOAD PKG_STD.TREF; -- Рег. номер функции обмена для выгрузки данных NEXSSERVICEFN_UPLOAD PKG_STD.TREF; -- Рег. номер функции обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_MDCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для обработки внешней системой
begin begin
/* Проверим параметры */ /* Проверим параметры */
if (NPRN is null) then if (NPRN is null) then
@ -560,40 +655,154 @@ create or replace package body UDO_PKG_EQUIPDS as
P_EXCEPTION(0, P_EXCEPTION(0,
'Не указана функция обмена для передачи внешней системе.'); 'Не указана функция обмена для передачи внешней системе.');
end if; end if;
if ((SEXSSERVICE_SEND_MDCB is null) or (SEXSSERVICEFN_SEND_MDCB is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для приёма обратной связи о передече внешней системе.');
end if;
if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then
P_EXCEPTION(0, P_EXCEPTION(0,
'Не указана функция обмена для обработки внешней системой.'); 'Не указана функция обмена для обработки внешней системой.');
end if; end if;
if ((SEXSSERVICE_SEND_RQCB is null) or (SEXSSERVICEFN_SEND_RQCB is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для приёма обратной связи об обработке внешней системой.');
end if;
/* Проверим права доступа */ /* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_INSERT'); UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_INSERT');
/* Разыменуем ссылки */ /* Разыменуем ссылки */
UDO_PKG_EQUIPDS_BASE.CM_JOINS(NCOMPANY => NCOMPANY, UDO_PKG_EQUIPDS_BASE.CM_JOINS(NCOMPANY => NCOMPANY,
SEQOBJKIND => SEQOBJKIND, SEQOBJKIND => SEQOBJKIND,
SDICMUNTS => SDICMUNTS, SDICMUNTS => SDICMUNTS,
SUSERPROCS_DATA => SUSERPROCS_DATA, SUSERPROCS_DATA => SUSERPROCS_DATA,
SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD,
SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD,
SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD,
SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD,
SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, SEXSSERVICE_SEND_MDCB => SEXSSERVICE_SEND_MDCB,
SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, SEXSSERVICEFN_SEND_MDCB => SEXSSERVICEFN_SEND_MDCB,
NEQOBJKIND => NEQOBJKIND, SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ,
NDICMUNTS => NDICMUNTS, SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ,
NUSERPROCS_DATA => NUSERPROCS_DATA, SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB,
NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB,
NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, NEQOBJKIND => NEQOBJKIND,
NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ); NDICMUNTS => NDICMUNTS,
NUSERPROCS_DATA => NUSERPROCS_DATA,
NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD,
NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD,
NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB,
NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ,
NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB);
/* Добавляем запись */ /* Добавляем запись */
UDO_PKG_EQUIPDS_BASE.CM_INS(NPRN => NPRN, UDO_PKG_EQUIPDS_BASE.CM_INS(NPRN => NPRN,
NEQOBJKIND => NEQOBJKIND, NEQOBJKIND => NEQOBJKIND,
NDICMUNTS => NDICMUNTS, NDICMUNTS => NDICMUNTS,
NUSERPROCS_DATA => NUSERPROCS_DATA, NUSERPROCS_DATA => NUSERPROCS_DATA,
NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD,
NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD,
NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB,
NRN => NRN); NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ,
NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB,
NRN => NRN);
end CM_INS; end CM_INS;
/* Клиентское исправление "Выборки данных оборудования (классы оборудования)" */
procedure CM_UPD
(
NRN in number, -- Регистрационный номер
SEQOBJKIND in varchar2, -- Класс оборудования
SDICMUNTS in varchar2, -- Единица измерения выборки
SUSERPROCS_DATA in varchar2, -- Процедура формирования
SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2 -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
NEQOBJKIND PKG_STD.TREF; -- Рег. номер класса оборудования
NDICMUNTS PKG_STD.TREF; -- Рег. номер единицы измерения выборки
NUSERPROCS_DATA PKG_STD.TREF; -- Рег. номер процедуры формирования
NEXSSERVICEFN_UPLOAD PKG_STD.TREF; -- Рег. номер функции обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_MDCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для обработки внешней системой
begin
/* Проверим параметры */
if (NRN is null) then
P_EXCEPTION(0, 'Не указан идентификатор исправляемого класса оборудования выборки данных.');
end if;
if (SEQOBJKIND is null) then
P_EXCEPTION(0, 'Не указан класс оборудования.');
end if;
if (SDICMUNTS is null) then
P_EXCEPTION(0, 'Не указана единица измерения выборки.');
end if;
if (SUSERPROCS_DATA is null) then
P_EXCEPTION(0, 'Не указана процедура формирования данных выборки.');
end if;
if ((SEXSSERVICE_UPLOAD is null) or (SEXSSERVICEFN_UPLOAD is null)) then
P_EXCEPTION(0, 'Не указана функция обмена для выгрузки данных.');
end if;
if ((SEXSSERVICE_SEND_MD is null) or (SEXSSERVICEFN_SEND_MD is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для передачи внешней системе.');
end if;
if ((SEXSSERVICE_SEND_MDCB is null) or (SEXSSERVICEFN_SEND_MDCB is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для приёма обратной связи о передече внешней системе.');
end if;
if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для обработки внешней системой.');
end if;
if ((SEXSSERVICE_SEND_RQCB is null) or (SEXSSERVICEFN_SEND_RQCB is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для приёма обратной связи об обработке внешней системой.');
end if;
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_UPDATE');
/* Разыменуем ссылки */
UDO_PKG_EQUIPDS_BASE.CM_JOINS(NCOMPANY => NCOMPANY,
SEQOBJKIND => SEQOBJKIND,
SDICMUNTS => SDICMUNTS,
SUSERPROCS_DATA => SUSERPROCS_DATA,
SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD,
SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD,
SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD,
SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD,
SEXSSERVICE_SEND_MDCB => SEXSSERVICE_SEND_MDCB,
SEXSSERVICEFN_SEND_MDCB => SEXSSERVICEFN_SEND_MDCB,
SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ,
SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ,
SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB,
SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB,
NEQOBJKIND => NEQOBJKIND,
NDICMUNTS => NDICMUNTS,
NUSERPROCS_DATA => NUSERPROCS_DATA,
NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD,
NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD,
NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB,
NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ,
NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB);
/* Исправляем запись */
UDO_PKG_EQUIPDS_BASE.CM_UPD(NRN => NRN,
NEQOBJKIND => NEQOBJKIND,
NDICMUNTS => NDICMUNTS,
NUSERPROCS_DATA => NUSERPROCS_DATA,
NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD,
NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD,
NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB,
NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ,
NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB);
end CM_UPD;
/* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */ /* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */
procedure CM_DEL procedure CM_DEL
( (
@ -760,11 +969,11 @@ create or replace package body UDO_PKG_EQUIPDS as
DDATASET_TS PKG_STD.TLDATE; -- Буфер для времени формирования данных выборки DDATASET_TS PKG_STD.TLDATE; -- Буфер для времени формирования данных выборки
begin begin
/* Проверим параметры */ /* Проверим параметры */
if (COALESCE(NDATASET_IDENT, 0) = 0) then if (NDATASET_IDENT is null) then
P_EXCEPTION(0, P_EXCEPTION(0,
'Пользовательская процедура формирования данных не вернула идентификатор буфера выборки.'); 'Пользовательская процедура формирования данных не вернула идентификатор буфера выборки.');
end if; end if;
if (COALESCE(NDATASET_CONFIG_IDENT, 0) = 0) then if (NDATASET_CONFIG_IDENT is null) then
P_EXCEPTION(0, P_EXCEPTION(0,
'Пользовательская процедура формирования данных не вернула идентификатор буфера описания выборки.'); 'Пользовательская процедура формирования данных не вернула идентификатор буфера описания выборки.');
end if; end if;
@ -1056,6 +1265,7 @@ create or replace package body UDO_PKG_EQUIPDS as
into NCOUNT into NCOUNT
from UDO_T_EQUIPDSCMFL T from UDO_T_EQUIPDSCMFL T
where T.PRN = RCMML.PRN where T.PRN = RCMML.PRN
and T.DATASET_ID = RCMML.DATASET_ID
and T.STATUS = UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_SENT; and T.STATUS = UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_SENT;
exception exception
when others then when others then
@ -1064,7 +1274,7 @@ create or replace package body UDO_PKG_EQUIPDS as
end; end;
if (NCOUNT = 0) then if (NCOUNT = 0) then
P_EXCEPTION(0, P_EXCEPTION(0,
'У класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.'); 'У выборки класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.');
end if; end if;
/* Отправим запрос на обучение */ /* Отправим запрос на обучение */
UDO_PKG_EQUIPDS_DATAPROCESS.SEND_RQ(NCOMPANY => NCOMPANY, NEQUIPDSCMML => RCMML.RN); UDO_PKG_EQUIPDS_DATAPROCESS.SEND_RQ(NCOMPANY => NCOMPANY, NEQUIPDSCMML => RCMML.RN);

View File

@ -112,14 +112,20 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
NEQOBJKIND out number, -- Рег. номер класса оборудования NEQOBJKIND out number, -- Рег. номер класса оборудования
NDICMUNTS out number, -- Рег. номер единицы измерения выборки NDICMUNTS out number, -- Рег. номер единицы измерения выборки
NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования
NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ out number -- Рег. номер функции обмена для обработки внешней системой NEXSSERVICEFN_SEND_MDCB out number, -- Рег. номер call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ out number, -- Рег. номер функции обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB out number -- Рег. номер call-back функции обмена для обработки внешней системой
); );
/* Базовое добавление "Выборки данных оборудования (классы оборудования)" */ /* Базовое добавление "Выборки данных оборудования (классы оборудования)" */
@ -131,7 +137,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
NUSERPROCS_DATA in number, -- Процедура формирования NUSERPROCS_DATA in number, -- Процедура формирования
NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе
NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
); );
@ -144,7 +152,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
NUSERPROCS_DATA in number, -- Процедура формирования NUSERPROCS_DATA in number, -- Процедура формирования
NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ in number -- Функция обмена для обработки внешней системой NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB in number -- Call-back функции обмена для обработки внешней системой
); );
/* Базовое удаление "Выборки данных оборудования (классы оборудования)" */ /* Базовое удаление "Выборки данных оборудования (классы оборудования)" */
@ -516,22 +526,28 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
/* Разыменование словарей "Выборки данных оборудования (классы оборудования)" */ /* Разыменование словарей "Выборки данных оборудования (классы оборудования)" */
procedure CM_JOINS procedure CM_JOINS
( (
NCOMPANY in number, -- Организация NCOMPANY in number, -- Организация
SEQOBJKIND in varchar2, -- Класс оборудования SEQOBJKIND in varchar2, -- Класс оборудования
SDICMUNTS in varchar2, -- Единица измерения выборки SDICMUNTS in varchar2, -- Единица измерения выборки
SUSERPROCS_DATA in varchar2, -- Процедура формирования SUSERPROCS_DATA in varchar2, -- Процедура формирования
SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных
SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных
SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе
NEQOBJKIND out number, -- Рег. номер класса оборудования SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
NDICMUNTS out number, -- Рег. номер единицы измерения выборки SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой
NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой
NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе NEQOBJKIND out number, -- Рег. номер класса оборудования
NEXSSERVICEFN_SEND_RQ out number -- Рег. номер функции обмена для обработки внешней системой NDICMUNTS out number, -- Рег. номер единицы измерения выборки
NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования
NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_MDCB out number, -- Рег. номер call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ out number, -- Рег. номер функции обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB out number -- Рег. номер call-back функции обмена для обработки внешней системой
) )
is is
NEXSSERVICE PKG_STD.TREF; -- Рег. номер сервиса обмена NEXSSERVICE PKG_STD.TREF; -- Рег. номер сервиса обмена
@ -568,6 +584,13 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
NEXSSERVICE => NEXSSERVICE, NEXSSERVICE => NEXSSERVICE,
SCODE => SEXSSERVICEFN_SEND_MD, SCODE => SEXSSERVICEFN_SEND_MD,
NRN => NEXSSERVICEFN_SEND_MD); NRN => NEXSSERVICEFN_SEND_MD);
/* Call-back функции обмена для передачи внешней системе */
FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_MDCB, NRN => NEXSSERVICE);
FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0,
NFLAG_OPTION => 0,
NEXSSERVICE => NEXSSERVICE,
SCODE => SEXSSERVICEFN_SEND_MDCB,
NRN => NEXSSERVICEFN_SEND_MDCB);
/* Функция обмена для обработки внешней системой */ /* Функция обмена для обработки внешней системой */
FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_RQ, NRN => NEXSSERVICE); FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_RQ, NRN => NEXSSERVICE);
FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0, FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0,
@ -575,25 +598,145 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
NEXSSERVICE => NEXSSERVICE, NEXSSERVICE => NEXSSERVICE,
SCODE => SEXSSERVICEFN_SEND_RQ, SCODE => SEXSSERVICEFN_SEND_RQ,
NRN => NEXSSERVICEFN_SEND_RQ); NRN => NEXSSERVICEFN_SEND_RQ);
/* Call-back функции обмена для обработки внешней системой */
FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_RQCB, NRN => NEXSSERVICE);
FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0,
NFLAG_OPTION => 0,
NEXSSERVICE => NEXSSERVICE,
SCODE => SEXSSERVICEFN_SEND_RQCB,
NRN => NEXSSERVICEFN_SEND_RQCB);
end CM_JOINS; end CM_JOINS;
/* Базовые проверки целостности и корректности "Выборки данных оборудования (классы оборудования)" */
procedure CM_CHECK
(
SMODE in varchar2, -- 'I' - добавление, 'U' - исправление, 'D' - удаление
RREC in UDO_T_EQUIPDSCM%rowtype -- Запись с новыми значения класса оборудования выборки данных
)
is
/* Локальные переменные */
RREC_OLD UDO_T_EQUIPDSCM%rowtype; -- Предыдущие значения записи класса оборудования выборки данных
/* Считывание типа сервиса обмена */
function EXSSERVICE_TYPE
(
NEXSSERVICEFN in number -- Рег. номер функции обмена
) return number -- Тип сервиса обмена (см. константы PKG_EXS.NSRV_TYPE_*)
is
begin
/* Найдем тип серсива обмена */
for C in (select S.SRV_TYPE
from EXSSERVICE S,
EXSSERVICEFN F
where F.RN = NEXSSERVICEFN
and F.PRN = S.RN)
loop
/* Нашли - вернём */
return C.SRV_TYPE;
end loop;
/* Ничего не нашли */
return null;
end EXSSERVICE_TYPE;
/* Проверка типов сервисов обмена */
procedure EXSSERVICE_TYPE_CHECK
(
RREC in UDO_T_EQUIPDSCM%rowtype -- Проверяемая запись
)
is
begin
if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_UPLOAD) <> PKG_EXS.NSRV_TYPE_SEND) then
P_EXCEPTION(0,
'Функция обмена для выгрузки данных должна иметь тип "Отправка сообщений".');
end if;
if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_MD) <> PKG_EXS.NSRV_TYPE_SEND) then
P_EXCEPTION(0,
'Функция обмена для передачи данных внешней системе должна иметь тип "Отправка сообщений".');
end if;
if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_MDCB) <> PKG_EXS.NSRV_TYPE_RECIVE) then
P_EXCEPTION(0,
'Функция обмена для обратной связи о передаче данных внешней системе должна иметь тип "Приём сообщений".');
end if;
if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_RQ) <> PKG_EXS.NSRV_TYPE_SEND) then
P_EXCEPTION(0,
'Функция обмена для обработки внешней системой должна иметь тип "Отправка сообщений".');
end if;
if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_RQCB) <> PKG_EXS.NSRV_TYPE_RECIVE) then
P_EXCEPTION(0,
'Функция обмена для обратной связи об обработке внешней системой должна иметь тип "Приём сообщений".');
end if;
end EXSSERVICE_TYPE_CHECK;
begin
/* Работаем от режима */
case SMODE
/* Добавление */
when 'I' then
begin
/* Проверим корректность типов серсовисов обмена */
EXSSERVICE_TYPE_CHECK(RREC => RREC);
end;
/* Исправление */
when 'U' then
begin
/* Считывание текущей записи */
RREC_OLD := CM_GET(NFLAG_SMART => 0, NRN => RREC.RN);
/* Если изменяются кличевые атрибуты, влияющие на выборку */
if ((RREC.EQOBJKIND <> RREC_OLD.EQOBJKIND) or (RREC.DICMUNTS <> RREC_OLD.DICMUNTS)) then
/* Проверим отсутствие файлов данных */
for C in (select T.RN from UDO_T_EQUIPDSCMFL T where T.PRN = RREC.RN)
loop
/* Они есть - изменения недопустимы */
P_EXCEPTION(0,
'Изменение ключевых атрибутов ("Класс оборудования", "Единица измерения выборки") недопустимо - для данного класса оборудования уже зарегистрированы файлы данных.');
end loop;
end if;
/* Проверим корректность типов серсовисов обмена */
EXSSERVICE_TYPE_CHECK(RREC => RREC);
end;
/* Удаление */
when 'D' then
begin
/* Специальных проверок нет, проверки на возможность удаления файлов и моделей класса оборудования запустятся автоматически при их удалении по связям */
null;
end;
/* Неизвестный режим работы */
else
P_EXCEPTION(0, 'Режим проверки "%s" не поддерживается.', SMODE);
end case;
end CM_CHECK;
/* Базовое добавление "Выборки данных оборудования (классы оборудования)" */ /* Базовое добавление "Выборки данных оборудования (классы оборудования)" */
procedure CM_INS procedure CM_INS
( (
NPRN in number, -- Родитель NPRN in number, -- Родитель
NEQOBJKIND in number, -- Класс оборудования NEQOBJKIND in number, -- Класс оборудования
NDICMUNTS in number, -- Единица измерения выборки NDICMUNTS in number, -- Единица измерения выборки
NUSERPROCS_DATA in number, -- Процедура формирования NUSERPROCS_DATA in number, -- Процедура формирования
NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе
NRN out number -- Регистрационный номер NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой
NRN out number -- Регистрационный номер
) )
is is
RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки
begin begin
/* Соберём запись */
RREC.PRN := NPRN;
RREC.EQOBJKIND := NEQOBJKIND;
RREC.DICMUNTS := NDICMUNTS;
RREC.USERPROCS_DATA := NUSERPROCS_DATA;
RREC.EXSSERVICEFN_UPLOAD := NEXSSERVICEFN_UPLOAD;
RREC.EXSSERVICEFN_SEND_MD := NEXSSERVICEFN_SEND_MD;
RREC.EXSSERVICEFN_SEND_MDCB := NEXSSERVICEFN_SEND_MDCB;
RREC.EXSSERVICEFN_SEND_RQ := NEXSSERVICEFN_SEND_RQ;
RREC.EXSSERVICEFN_SEND_RQCB := NEXSSERVICEFN_SEND_RQCB;
/* Проверим возможность исполнения */
CM_CHECK(SMODE => 'I', RREC => RREC);
/* Формируем рег. номер */ /* Формируем рег. номер */
NRN := GEN_ID(); NRN := GEN_ID();
/* Добавляем запись */ /* Добавляем запись */
insert into UDO_T_EQUIPDSCM insert into UDO_T_EQUIPDSCM
(RN, (RN,
PRN, PRN,
@ -603,7 +746,9 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
USERPROCS_DATA, USERPROCS_DATA,
EXSSERVICEFN_UPLOAD, EXSSERVICEFN_UPLOAD,
EXSSERVICEFN_SEND_MD, EXSSERVICEFN_SEND_MD,
EXSSERVICEFN_SEND_RQ) EXSSERVICEFN_SEND_MDCB,
EXSSERVICEFN_SEND_RQ,
EXSSERVICEFN_SEND_RQCB)
values values
(NRN, (NRN,
NPRN, NPRN,
@ -613,40 +758,64 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
NUSERPROCS_DATA, NUSERPROCS_DATA,
NEXSSERVICEFN_UPLOAD, NEXSSERVICEFN_UPLOAD,
NEXSSERVICEFN_SEND_MD, NEXSSERVICEFN_SEND_MD,
NEXSSERVICEFN_SEND_RQ); NEXSSERVICEFN_SEND_MDCB,
NEXSSERVICEFN_SEND_RQ,
NEXSSERVICEFN_SEND_RQCB);
end CM_INS; end CM_INS;
/* Базовое исправление "Выборки данных оборудования (классы оборудования)" */ /* Базовое исправление "Выборки данных оборудования (классы оборудования)" */
procedure CM_UPD procedure CM_UPD
( (
NRN in number, -- Регистрационный номер NRN in number, -- Регистрационный номер
NEQOBJKIND in number, -- Класс оборудования NEQOBJKIND in number, -- Класс оборудования
NDICMUNTS in number, -- Единица измерения выборки NDICMUNTS in number, -- Единица измерения выборки
NUSERPROCS_DATA in number, -- Процедура формирования NUSERPROCS_DATA in number, -- Процедура формирования
NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных
NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ in number -- Функция обмена для обработки внешней системой NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой
NEXSSERVICEFN_SEND_RQCB in number -- Call-back функции обмена для обработки внешней системой
) )
is is
RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки
begin begin
/* Соберём запись */
RREC := CM_GET(NFLAG_SMART => 0, NRN => NRN);
RREC.EQOBJKIND := NEQOBJKIND;
RREC.DICMUNTS := NDICMUNTS;
RREC.USERPROCS_DATA := NUSERPROCS_DATA;
RREC.EXSSERVICEFN_UPLOAD := NEXSSERVICEFN_UPLOAD;
RREC.EXSSERVICEFN_SEND_MD := NEXSSERVICEFN_SEND_MD;
RREC.EXSSERVICEFN_SEND_MDCB := NEXSSERVICEFN_SEND_MDCB;
RREC.EXSSERVICEFN_SEND_RQ := NEXSSERVICEFN_SEND_RQ;
RREC.EXSSERVICEFN_SEND_RQCB := NEXSSERVICEFN_SEND_RQCB;
/* Проверим возможность исполнения */
CM_CHECK(SMODE => 'U', RREC => RREC);
/* Исправим данные */ /* Исправим данные */
update UDO_T_EQUIPDSCM T update UDO_T_EQUIPDSCM T
set T.EQOBJKIND = NEQOBJKIND, set T.EQOBJKIND = NEQOBJKIND,
T.DICMUNTS = NDICMUNTS, T.DICMUNTS = NDICMUNTS,
T.USERPROCS_DATA = NUSERPROCS_DATA, T.USERPROCS_DATA = NUSERPROCS_DATA,
T.EXSSERVICEFN_UPLOAD = NEXSSERVICEFN_UPLOAD, T.EXSSERVICEFN_UPLOAD = NEXSSERVICEFN_UPLOAD,
T.EXSSERVICEFN_SEND_MD = NEXSSERVICEFN_SEND_MD, T.EXSSERVICEFN_SEND_MD = NEXSSERVICEFN_SEND_MD,
T.EXSSERVICEFN_SEND_RQ = NEXSSERVICEFN_SEND_RQ T.EXSSERVICEFN_SEND_MDCB = NEXSSERVICEFN_SEND_MDCB,
T.EXSSERVICEFN_SEND_RQ = NEXSSERVICEFN_SEND_RQ,
T.EXSSERVICEFN_SEND_RQCB = NEXSSERVICEFN_SEND_RQCB
where T.RN = NRN; where T.RN = NRN;
end CM_UPD; end CM_UPD;
/* Базовое удаление "Выборки данных оборудования (классы оборудования)" */ /* Базовое удаление "Выборки данных оборудования (классы оборудования)" */
procedure CM_DEL procedure CM_DEL
( (
NRN in number -- Регистрационный номер NRN in number -- Регистрационный номер
) )
is is
RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки
begin begin
/* Соберём запись */
RREC := CM_GET(NFLAG_SMART => 0, NRN => NRN);
/* Проверим возможность исполнения */
CM_CHECK(SMODE => 'D', RREC => RREC);
/* Удалим файлы */ /* Удалим файлы */
for C in (select T.RN from UDO_T_EQUIPDSCMFL T where T.PRN = NRN) for C in (select T.RN from UDO_T_EQUIPDSCMFL T where T.PRN = NRN)
loop loop

View File

@ -17,8 +17,12 @@ create table UDO_T_EQUIPDSCM
EXSSERVICEFN_UPLOAD number(17) not null, EXSSERVICEFN_UPLOAD number(17) not null,
/* Функция обмена для передачи внешней системе */ /* Функция обмена для передачи внешней системе */
EXSSERVICEFN_SEND_MD number(17) not null, EXSSERVICEFN_SEND_MD number(17) not null,
/* Call-back функции обмена для передачи внешней системе */
EXSSERVICEFN_SEND_MDCB number(17) not null,
/* Функция обмена для обработки внешней системой */ /* Функция обмена для обработки внешней системой */
EXSSERVICEFN_SEND_RQ number(17) not null, EXSSERVICEFN_SEND_RQ number(17) not null,
/* Call-back функции обмена для обработки внешней системой */
EXSSERVICEFN_SEND_RQCB number(17) not null,
/* Ключи */ /* Ключи */
constraint UDO_C_EQUIPDSCM_RN_PK primary key (RN), constraint UDO_C_EQUIPDSCM_RN_PK primary key (RN),
constraint UDO_C_EQUIPDSCM_PRN_FK foreign key (PRN) references UDO_T_EQUIPDS(RN), constraint UDO_C_EQUIPDSCM_PRN_FK foreign key (PRN) references UDO_T_EQUIPDS(RN),
@ -27,6 +31,8 @@ create table UDO_T_EQUIPDSCM
constraint UDO_C_EQUIPDSCM_USRPD_FK foreign key (USERPROCS_DATA) references USERPROCS(RN), constraint UDO_C_EQUIPDSCM_USRPD_FK foreign key (USERPROCS_DATA) references USERPROCS(RN),
constraint UDO_C_EQUIPDSCM_EXSFNUPLD_FK foreign key (EXSSERVICEFN_UPLOAD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNUPLD_FK foreign key (EXSSERVICEFN_UPLOAD) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDMD_FK foreign key (EXSSERVICEFN_SEND_MD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDMD_FK foreign key (EXSSERVICEFN_SEND_MD) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDMDCB_FK foreign key (EXSSERVICEFN_SEND_MDCB) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDRQ_FK foreign key (EXSSERVICEFN_SEND_RQ) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDRQ_FK foreign key (EXSSERVICEFN_SEND_RQ) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDRQCB_FK foreign key (EXSSERVICEFN_SEND_RQCB) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_UN unique (PRN, EQOBJKIND) constraint UDO_C_EQUIPDSCM_UN unique (PRN, EQOBJKIND)
); );

View File

@ -47,6 +47,7 @@ const REFRESH_INITIAL = {
const DIALOGS_INITIAL = { const DIALOGS_INITIAL = {
dataSelectionIU: false, dataSelectionIU: false,
dataSelectionClassMachineIU: false, dataSelectionClassMachineIU: false,
dataSelectionClassMachine: null,
dataSelectionClassMachineFileSendMD: false, dataSelectionClassMachineFileSendMD: false,
dataSelectionClassMachineModelIU: false dataSelectionClassMachineModelIU: false
}; };
@ -139,7 +140,13 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
const handleDataSelectionClassMachineClick = value => setDataSelectionClassMachine(value); const handleDataSelectionClassMachineClick = value => setDataSelectionClassMachine(value);
//При нажатии на "Добавить класс оборудования" //При нажатии на "Добавить класс оборудования"
const handleAddEquipDataSelectionClassMachine = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true })); const handleAddEquipDataSelectionClassMachine = () =>
setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true, dataSelectionClassMachine: null }));
//При нажатии на "Изменить класс оборудования"
const handleEditEquipDataSelectionClassMachine = equipDSCM => {
setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true, dataSelectionClassMachine: equipDSCM }));
};
//При нажатии на "Удалить класс оборудования" //При нажатии на "Удалить класс оборудования"
const handleDeleteEquipDataSelectionClassMachine = async equipDSCM => { const handleDeleteEquipDataSelectionClassMachine = async equipDSCM => {
@ -153,24 +160,39 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
//При сохранении диалога IU класса оборудования //При сохранении диалога IU класса оборудования
const handleEquipDataSelectionClassMachineIUOk = async values => { const handleEquipDataSelectionClassMachineIUOk = async values => {
const data = await executeStored({ let dataSelectionClassMachine = null;
stored: "UDO_PKG_EQUIPDS.CM_INS", const args = {
args: { SEQOBJKIND: values.eqobjKind,
NPRN: equipDataSelection, SDICMUNTS: values.measureUnit,
SEQOBJKIND: values.eqobjKind, SUSERPROCS_DATA: values.userprocsData,
SDICMUNTS: values.measureUnit, SEXSSERVICE_UPLOAD: values.exsServiceUpload,
SUSERPROCS_DATA: values.userprocsData, SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload,
SEXSSERVICE_UPLOAD: values.exsServiceUpload, SEXSSERVICE_SEND_MD: values.exsServiceSendMd,
SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload, SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd,
SEXSSERVICE_SEND_MD: values.exsServiceSendMd, SEXSSERVICE_SEND_MDCB: values.exsServiceSendMdCb,
SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd, SEXSSERVICEFN_SEND_MDCB: values.exsServiceFnSendMdCb,
SEXSSERVICE_SEND_RQ: values.exsServiceSendRq, SEXSSERVICE_SEND_RQ: values.exsServiceSendRq,
SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq,
} SEXSSERVICE_SEND_RQCB: values.exsServiceSendRqCb,
}); SEXSSERVICEFN_SEND_RQCB: values.exsServiceFnSendRqCb
setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: false })); };
if (dialogs.dataSelectionClassMachine) {
await executeStored({
stored: "UDO_PKG_EQUIPDS.CM_UPD",
args: { NRN: dialogs.dataSelectionClassMachine, ...args }
});
dataSelectionClassMachine = dialogs.dataSelectionClassMachine;
setRefresh(pv => ({ ...pv, dataSelectionClassMachineCard: pv.dataSelectionClassMachineCard + 1 }));
} else {
const data = await executeStored({
stored: "UDO_PKG_EQUIPDS.CM_INS",
args: { NPRN: equipDataSelection, ...args }
});
dataSelectionClassMachine = data.NRN;
}
setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: false, dataSelectionClassMachine: null }));
setRefresh(pv => ({ ...pv, dataSelectionClassMachine: pv.dataSelectionClassMachine + 1 })); setRefresh(pv => ({ ...pv, dataSelectionClassMachine: pv.dataSelectionClassMachine + 1 }));
setDataSelectionClassMachine(data.NRN); setDataSelectionClassMachine(dataSelectionClassMachine);
}; };
//Отработка результатов выполнения пользовательской процедуры формирования данных выборки //Отработка результатов выполнения пользовательской процедуры формирования данных выборки
@ -187,6 +209,10 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 })); setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
}; };
//При нажатии "Обновить" в списке файлов карточки класса оборудования
const handleRefreshEquipDataSelectionClassMachineFiles = () =>
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
//При нажатии "Сформировать" в списке файлов карточки класса оборудования //При нажатии "Сформировать" в списке файлов карточки класса оборудования
const handleMakeEquipDataSelectionClassMachineFiles = (equipDSCM, procedure, clear) => { const handleMakeEquipDataSelectionClassMachineFiles = (equipDSCM, procedure, clear) => {
pOnlineUserProcedure({ pOnlineUserProcedure({
@ -219,6 +245,10 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
//При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования //При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования
const handleSendMdEquipDataSelectionClassMachineFiles = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: true })); const handleSendMdEquipDataSelectionClassMachineFiles = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: true }));
//При нажатии на "Обновить модели класса оборудования"
const handleRefreshEquipDataSelectionClassMachineModel = () =>
setRefresh(pv => ({ ...pv, dataSelectionClassMachineModelsList: pv.dataSelectionClassMachineModelsList + 1 }));
//При нажатии на "Добавить модель класса оборудования" //При нажатии на "Добавить модель класса оборудования"
const handleAddEquipDataSelectionClassMachineModel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: true })); const handleAddEquipDataSelectionClassMachineModel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: true }));
@ -285,6 +315,7 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
) : null} ) : null}
{dialogs.dataSelectionClassMachineIU ? ( {dialogs.dataSelectionClassMachineIU ? (
<EquipDataSelectionClassMachineIU <EquipDataSelectionClassMachineIU
classMachine={dialogs.dataSelectionClassMachine}
onOk={handleEquipDataSelectionClassMachineIUOk} onOk={handleEquipDataSelectionClassMachineIUOk}
onCancel={handleEquipDataSelectionClassMachineIUCancel} onCancel={handleEquipDataSelectionClassMachineIUCancel}
/> />
@ -351,11 +382,14 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
card={equipDataSelectionClassMachineCard} card={equipDataSelectionClassMachineCard}
filesList={equipDataSelectionClassMachineFilesList} filesList={equipDataSelectionClassMachineFilesList}
modelsList={equipDataSelectionClassMachineModelsList} modelsList={equipDataSelectionClassMachineModelsList}
onCardEdit={handleEditEquipDataSelectionClassMachine}
onCardDelete={handleDeleteEquipDataSelectionClassMachine} onCardDelete={handleDeleteEquipDataSelectionClassMachine}
onClassMachineFilesRefresh={handleRefreshEquipDataSelectionClassMachineFiles}
onClassMachineFilesMake={handleMakeEquipDataSelectionClassMachineFiles} onClassMachineFilesMake={handleMakeEquipDataSelectionClassMachineFiles}
onClassMachineFilesDelete={handleDeleteEquipDataSelectionClassMachineFiles} onClassMachineFilesDelete={handleDeleteEquipDataSelectionClassMachineFiles}
onClassMachineFilesUpload={handleUploadEquipDataSelectionClassMachineFiles} onClassMachineFilesUpload={handleUploadEquipDataSelectionClassMachineFiles}
onClassMachineFilesSendMd={handleSendMdEquipDataSelectionClassMachineFiles} onClassMachineFilesSendMd={handleSendMdEquipDataSelectionClassMachineFiles}
onClassMachineModelRefresh={handleRefreshEquipDataSelectionClassMachineModel}
onClassMachineModelAdd={handleAddEquipDataSelectionClassMachineModel} onClassMachineModelAdd={handleAddEquipDataSelectionClassMachineModel}
onClassMachineModelDelete={handleDeleteEquipDataSelectionClassMachineModel} onClassMachineModelDelete={handleDeleteEquipDataSelectionClassMachineModel}
onClassMachineModelSendRq={handleSendRqEquipDataSelectionClassMachineModel} onClassMachineModelSendRq={handleSendRqEquipDataSelectionClassMachineModel}

View File

@ -7,7 +7,7 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
import React, { useState, useContext, useRef } from "react"; //Классы React import React, { useState, useContext, useRef, useEffect } from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента import PropTypes from "prop-types"; //Контроль свойств компонента
import { import {
Box, Box,
@ -53,7 +53,7 @@ import {
import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения
import { DS_RN_DEFAULT, TASK_LIST } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки import { DS_RN_DEFAULT, TASK_LIST } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки
import { useEquipDataSelectionClassMachineDataSetsList } from "./admin_tab_hooks"; //Вспомогательные хуки import { useEquipDataSelectionClassMachineDataSetsList, useEquipDataSelectionClassMachineCard } from "./admin_tab_hooks"; //Вспомогательные хуки
//--------- //---------
//Константы //Константы
@ -97,6 +97,7 @@ const STYLES = {
overflowY: "auto", overflowY: "auto",
...SCROLL_STYLES ...SCROLL_STYLES
}, },
EQUIP_DSCM_DIALOG_CONTENT: { ...SCROLL_STYLES },
FL_ML_TABLE: { FL_ML_TABLE: {
height: `200px`, height: `200px`,
...SCROLL_STYLES ...SCROLL_STYLES
@ -305,7 +306,7 @@ EquipDataSelectionIU.propTypes = {
}; };
//Диалог IU класса оборудования выборки данных //Диалог IU класса оборудования выборки данных
const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => { const EquipDataSelectionClassMachineIU = ({ classMachine, onOk, onCancel }) => {
//Подключение к контексту приложения //Подключение к контексту приложения
const { pOnlineShowDictionary } = useContext(ApplicationСtx); const { pOnlineShowDictionary } = useContext(ApplicationСtx);
@ -318,18 +319,45 @@ const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => {
exsServiceFnUpload: "", exsServiceFnUpload: "",
exsServiceSendMd: "", exsServiceSendMd: "",
exsServiceFnSendMd: "", exsServiceFnSendMd: "",
exsServiceSendMdCb: "",
exsServiceFnSendMdCb: "",
exsServiceSendRq: "", exsServiceSendRq: "",
exsServiceFnSendRq: "" exsServiceFnSendRq: "",
exsServiceSendRqCb: "",
exsServiceFnSendRqCb: ""
}); });
//Карточка из базы
const { equipDataSelectionClassMachineCard } = useEquipDataSelectionClassMachineCard(classMachine, 0);
//При загрузке карточки из базы
useEffect(() => {
if (equipDataSelectionClassMachineCard.NRN)
setValues({
eqobjKind: equipDataSelectionClassMachineCard.SSEQOBJKIND,
measureUnit: equipDataSelectionClassMachineCard.SDICMUNTS,
userprocsData: equipDataSelectionClassMachineCard.SUSERPROCS_DATA,
exsServiceUpload: equipDataSelectionClassMachineCard.SEXSSERVICE_UPLOAD,
exsServiceFnUpload: equipDataSelectionClassMachineCard.SEXSSERVICEFN_UPLOAD,
exsServiceSendMd: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_MD,
exsServiceFnSendMd: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_MD,
exsServiceSendMdCb: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_MDCB,
exsServiceFnSendMdCb: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_MDCB,
exsServiceSendRq: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_RQ,
exsServiceFnSendRq: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQ,
exsServiceSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_RQCB,
exsServiceFnSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQCB
});
}, [equipDataSelectionClassMachineCard]);
//Отработка воода значения в форму //Отработка воода значения в форму
const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value })); const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value }));
//Генерация содержимого //Генерация содержимого
return ( return (
<Dialog open={true} onClose={() => (onOk ? onCancel() : null)}> <Dialog open={true} onClose={() => (onOk ? onCancel() : null)} maxWidth={"sm"} fullWidth={true}>
<DialogTitle>Класс оборудования выборки данных</DialogTitle> <DialogTitle>Класс оборудования выборки данных</DialogTitle>
<DialogContent> <DialogContent sx={STYLES.EQUIP_DSCM_DIALOG_CONTENT}>
<IUDFormTextField <IUDFormTextField
elementCode={"eqobjKind"} elementCode={"eqobjKind"}
elementValue={values.eqobjKind} elementValue={values.eqobjKind}
@ -379,6 +407,20 @@ const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => {
onChange={handleValueChanged} onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)}
/> />
<IUDFormTextField
elementCode={"exsServiceSendMdCb"}
elementValue={values.exsServiceSendMdCb}
labelText={"Сервис обмена для обратной связи о передаче внешней системе"}
onChange={handleValueChanged}
disabled
/>
<IUDFormTextField
elementCode={"exsServiceFnSendMdCb"}
elementValue={values.exsServiceFnSendMdCb}
labelText={"Функция обмена для обратной связи о передаче внешней системе"}
onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMdCb", callBack)}
/>
<IUDFormTextField <IUDFormTextField
elementCode={"exsServiceSendRq"} elementCode={"exsServiceSendRq"}
elementValue={values.exsServiceSendRq} elementValue={values.exsServiceSendRq}
@ -393,6 +435,20 @@ const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => {
onChange={handleValueChanged} onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)}
/> />
<IUDFormTextField
elementCode={"exsServiceSendRqCb"}
elementValue={values.exsServiceSendRqCb}
labelText={"Сервис обмена для обратной связи об обработке внешней системой"}
onChange={handleValueChanged}
disabled
/>
<IUDFormTextField
elementCode={"exsServiceFnSendRqCb"}
elementValue={values.exsServiceFnSendRqCb}
labelText={"Функция обмена для обратной связи об обработке внешней системой"}
onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRqCb", callBack)}
/>
</DialogContent> </DialogContent>
<DialogActions> <DialogActions>
<Button onClick={() => (onOk ? onOk(values) : null)}>{BUTTONS.OK}</Button> <Button onClick={() => (onOk ? onOk(values) : null)}>{BUTTONS.OK}</Button>
@ -404,6 +460,7 @@ const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => {
//Контроль свойств - Диалог IU класса оборудования выборки данных //Контроль свойств - Диалог IU класса оборудования выборки данных
EquipDataSelectionClassMachineIU.propTypes = { EquipDataSelectionClassMachineIU.propTypes = {
classMachine: PropTypes.number,
onOk: PropTypes.func, onOk: PropTypes.func,
onCancel: PropTypes.func onCancel: PropTypes.func
}; };
@ -588,11 +645,14 @@ const EquipDataSelectionClassMachineCard = ({
card, card,
filesList, filesList,
modelsList, modelsList,
onCardEdit,
onCardDelete, onCardDelete,
onClassMachineFilesRefresh,
onClassMachineFilesMake, onClassMachineFilesMake,
onClassMachineFilesDelete, onClassMachineFilesDelete,
onClassMachineFilesUpload, onClassMachineFilesUpload,
onClassMachineFilesSendMd, onClassMachineFilesSendMd,
onClassMachineModelRefresh,
onClassMachineModelAdd, onClassMachineModelAdd,
onClassMachineModelDelete, onClassMachineModelDelete,
onClassMachineModelSendRq onClassMachineModelSendRq
@ -600,9 +660,15 @@ const EquipDataSelectionClassMachineCard = ({
//Подключаемся к теме //Подключаемся к теме
const theme = useTheme(); const theme = useTheme();
//При нажатии на "Исправить" для карточки
const handleCardEditClick = () => (onCardEdit ? onCardEdit(card.NRN) : null);
//При нажатии на "Удалить" для карточки //При нажатии на "Удалить" для карточки
const handleCardDeleteClick = () => (onCardDelete ? onCardDelete(card.NRN) : null); const handleCardDeleteClick = () => (onCardDelete ? onCardDelete(card.NRN) : null);
//При нажатии на "Обновить" для файлов данных
const handleClassMachineFilesRefreshClick = () => (onClassMachineFilesRefresh ? onClassMachineFilesRefresh() : null);
//При нажатии на "Сформировать" для файлов данных //При нажатии на "Сформировать" для файлов данных
const handleClassMachineFilesMakeClick = option => const handleClassMachineFilesMakeClick = option =>
onClassMachineFilesMake ? onClassMachineFilesMake(card.NRN, card.SUSERPROCS_DATA, option.code === "CLEAR_AND_MAKE" ? 1 : 0) : null; onClassMachineFilesMake ? onClassMachineFilesMake(card.NRN, card.SUSERPROCS_DATA, option.code === "CLEAR_AND_MAKE" ? 1 : 0) : null;
@ -616,6 +682,9 @@ const EquipDataSelectionClassMachineCard = ({
//При нажатии на "Удалить" для файлов данных //При нажатии на "Удалить" для файлов данных
const handleClassMachineFilesDeleteClick = equipDSCMFL => (onClassMachineFilesDelete ? onClassMachineFilesDelete(equipDSCMFL) : null); const handleClassMachineFilesDeleteClick = equipDSCMFL => (onClassMachineFilesDelete ? onClassMachineFilesDelete(equipDSCMFL) : null);
//При нажатии на "Обновить" для моделей
const handleClassMachineModelRefreshClick = () => (onClassMachineModelRefresh ? onClassMachineModelRefresh() : null);
//При нажатии на "Добавить" для моделей //При нажатии на "Добавить" для моделей
const handleClassMachineModelAddClick = () => (onClassMachineModelAdd ? onClassMachineModelAdd() : null); const handleClassMachineModelAddClick = () => (onClassMachineModelAdd ? onClassMachineModelAdd() : null);
@ -634,6 +703,9 @@ const EquipDataSelectionClassMachineCard = ({
<Typography variant="h5" component="div"> <Typography variant="h5" component="div">
{card.SNAME} {card.SNAME}
</Typography> </Typography>
<IconButton onClick={handleCardEditClick}>
<Icon>edit</Icon>
</IconButton>
<IconButton onClick={handleCardDeleteClick}> <IconButton onClick={handleCardDeleteClick}>
<Icon>delete</Icon> <Icon>delete</Icon>
</IconButton> </IconButton>
@ -645,6 +717,9 @@ const EquipDataSelectionClassMachineCard = ({
Файлы данных Файлы данных
</Typography> </Typography>
<Stack spacing={0} direction={"row"}> <Stack spacing={0} direction={"row"}>
<IconButton onClick={handleClassMachineFilesRefreshClick}>
<Icon>refresh</Icon>
</IconButton>
<PopUpButton <PopUpButton
onClick={handleClassMachineFilesMakeClick} onClick={handleClassMachineFilesMakeClick}
options={[ options={[
@ -676,9 +751,14 @@ const EquipDataSelectionClassMachineCard = ({
<Typography variant="h6" component="div"> <Typography variant="h6" component="div">
Модели Модели
</Typography> </Typography>
<IconButton onClick={handleClassMachineModelAddClick}> <Stack spacing={0} direction={"row"}>
<Icon>add</Icon> <IconButton onClick={handleClassMachineModelRefreshClick}>
</IconButton> <Icon>refresh</Icon>
</IconButton>
<IconButton onClick={handleClassMachineModelAddClick}>
<Icon>add</Icon>
</IconButton>
</Stack>
</Stack> </Stack>
<P8PDataGrid <P8PDataGrid
{...{ ...P8P_DATA_GRID_CONFIG_PROPS }} {...{ ...P8P_DATA_GRID_CONFIG_PROPS }}
@ -712,11 +792,14 @@ EquipDataSelectionClassMachineCard.propTypes = {
card: PropTypes.object.isRequired, card: PropTypes.object.isRequired,
filesList: PropTypes.object.isRequired, filesList: PropTypes.object.isRequired,
modelsList: PropTypes.object.isRequired, modelsList: PropTypes.object.isRequired,
onCardEdit: PropTypes.func,
onCardDelete: PropTypes.func, onCardDelete: PropTypes.func,
onClassMachineFilesRefresh: PropTypes.func,
onClassMachineFilesMake: PropTypes.func, onClassMachineFilesMake: PropTypes.func,
onClassMachineFilesDelete: PropTypes.func, onClassMachineFilesDelete: PropTypes.func,
onClassMachineFilesUpload: PropTypes.func, onClassMachineFilesUpload: PropTypes.func,
onClassMachineFilesSendMd: PropTypes.func, onClassMachineFilesSendMd: PropTypes.func,
onClassMachineModelRefresh: PropTypes.func,
onClassMachineModelAdd: PropTypes.func, onClassMachineModelAdd: PropTypes.func,
onClassMachineModelDelete: PropTypes.func, onClassMachineModelDelete: PropTypes.func,
onClassMachineModelSendRq: PropTypes.func onClassMachineModelSendRq: PropTypes.func

View File

@ -126,7 +126,11 @@ const selectServiceFn = (showDictionary, name, callBack) => {
? "exsServiceUpload" ? "exsServiceUpload"
: name == "exsServiceFnSendMd" : name == "exsServiceFnSendMd"
? "exsServiceSendMd" ? "exsServiceSendMd"
: "exsServiceSendRq", : name == "exsServiceFnSendMdCb"
? "exsServiceSendMdCb"
: name == "exsServiceFnSendRq"
? "exsServiceSendRq"
: "exsServiceSendRqCb",
value: res.outParameters.out_CODE value: res.outParameters.out_CODE
} }
] ]

View File

@ -254,8 +254,12 @@ const ForecastTab = ({ onGoToAdmin }) => {
SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload, SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload,
SEXSSERVICE_SEND_MD: values.exsServiceSendMd, SEXSSERVICE_SEND_MD: values.exsServiceSendMd,
SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd, SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd,
SEXSSERVICE_SEND_MDCB: values.exsServiceSendMdCb,
SEXSSERVICEFN_SEND_MDCB: values.exsServiceFnSendMdCb,
SEXSSERVICE_SEND_RQ: values.exsServiceSendRq, SEXSSERVICE_SEND_RQ: values.exsServiceSendRq,
SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq,
SEXSSERVICE_SEND_RQCB: values.exsServiceSendRqCb,
SEXSSERVICEFN_SEND_RQCB: values.exsServiceFnSendRqCb
} }
}); });
setDialogs(pv => ({ ...pv, makeEqDataSet: false })); setDialogs(pv => ({ ...pv, makeEqDataSet: false }));

View File

@ -654,8 +654,12 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
exsServiceFnUpload: "Загрузкаа_SCP", exsServiceFnUpload: "Загрузкаа_SCP",
exsServiceSendMd: "Загрузкаареймворк", exsServiceSendMd: "Загрузкаареймворк",
exsServiceFnSendMd: "Передача данных", exsServiceFnSendMd: "Передача данных",
exsServiceSendMdCb: оучение_от_Фреймворка",
exsServiceFnSendMdCb: "Состояние загрузки данных",
exsServiceSendRq: "Загрузкаареймворк", exsServiceSendRq: "Загрузкаареймворк",
exsServiceFnSendRq: "Запрос на обучение" exsServiceFnSendRq: "Запрос на обучение",
exsServiceSendRqCb: оучение_от_Фреймворка",
exsServiceFnSendRqCb: "Состояние обучения модели"
}); });
//Отработка воода значения в форму //Отработка воода значения в форму
@ -663,7 +667,7 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
//Генерация содержимого //Генерация содержимого
return ( return (
<Dialog open={true} onClose={() => (onOk ? onCancel() : null)}> <Dialog open={true} onClose={() => (onOk ? onCancel() : null)} maxWidth={"sm"} fullWidth={true}>
<DialogTitle>Регистрация выборки данных класса технического объекта</DialogTitle> <DialogTitle>Регистрация выборки данных класса технического объекта</DialogTitle>
<DialogContent sx={STYLES.TECH_OBJ_MAKE_DATASET_DIALOG_CONTENT}> <DialogContent sx={STYLES.TECH_OBJ_MAKE_DATASET_DIALOG_CONTENT}>
{equipDataSelectionListIsLoading ? null : equipDataSelectionListAccess ? ( {equipDataSelectionListIsLoading ? null : equipDataSelectionListAccess ? (
@ -725,6 +729,20 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
onChange={handleValueChanged} onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)}
/> />
<IUDFormTextField
elementCode={"exsServiceSendMdCb"}
elementValue={values.exsServiceSendMdCb}
labelText={"Сервис обмена для обратной связи о передаче внешней системе"}
onChange={handleValueChanged}
disabled
/>
<IUDFormTextField
elementCode={"exsServiceFnSendMdCb"}
elementValue={values.exsServiceFnSendMdCb}
labelText={"Функция обмена для обратной связи о передаче внешней системе"}
onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMdCb", callBack)}
/>
<IUDFormTextField <IUDFormTextField
elementCode={"exsServiceSendRq"} elementCode={"exsServiceSendRq"}
elementValue={values.exsServiceSendRq} elementValue={values.exsServiceSendRq}
@ -739,6 +757,20 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
onChange={handleValueChanged} onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)}
/> />
<IUDFormTextField
elementCode={"exsServiceSendRqCb"}
elementValue={values.exsServiceSendRqCb}
labelText={"Сервис обмена для обратной связи об обработке внешней системой"}
onChange={handleValueChanged}
disabled
/>
<IUDFormTextField
elementCode={"exsServiceFnSendRqCb"}
elementValue={values.exsServiceFnSendRqCb}
labelText={"Функция обмена для обратной связи об обработке внешней системой"}
onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRqCb", callBack)}
/>
</> </>
) : ( ) : (
<P8PAppInlineError text="У вас нет прав доступа для обучения моделей. Обратитесь к администратору." /> <P8PAppInlineError text="У вас нет прав доступа для обучения моделей. Обратитесь к администратору." />