3l как добавить вьюху в Заявки для обработки > Представлен
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Ср Фев 22, 2017 17:14  3l как добавить вьюху в Заявки для обработки >Представлен |
|
Полезность: Нет оценки
|
3l как добавить вьюху в Заявки для обработки > Представление для отображения? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пн Фев 27, 2017 09:53  Re: 3l как добавить вьюху в Заявки |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: | 3l как добавить вьюху в Заявки для обработки > Представление для отображения? |
чувствуется, хорошо отметил 23-е  |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Пн Фев 27, 2017 09:55  Re: 3l как добавить вьюху в Заявки |
|
Полезность: Нет оценки
|
vtar пишет: | Матвеев Евгений пишет: | 3l как добавить вьюху в Заявки для обработки > Представление для отображения? |
чувствуется, хорошо отметил 23-е  |
Приветствую, да вроде как обычно...
С праздничком
Данный вопрос закрыт, разобрался |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пн Фев 27, 2017 10:01  Re: 3l как добавить вьюху в Заявки |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: |
Данный вопрос закрыт, разобрался |
разобрался - поделись. |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Пн Фев 27, 2017 18:00   |
|
Полезность: 1
|
Если кратенько, то нужно:
1. Создать само представление (стандартная вьюха Представление для просмотра (PL/Plus);
2. Определить в HOOKе FM_START_FORM групповую операцию определяющую номенклатуру выводимых в 3l полей;
3. Запустить несколько строчек исходного кода (VW_CRIT_FM_START_FORM_CC, VW_CRIT_FM_START_FORM_CS, VW_CRIT_FM_START_FORM_LA короткие имена вьюх)
Код: |
pragma macro(ILog, '[CONV]::[LOG].InitLOG([1], [2]);', substitute);
pragma macro(WLog, '[CONV]::[LOG].WriteMess([1]);', substitute);
log_fname const string(100) := &METHOD$SNAME || '.log'; --имя файла лога
Procedure initlog
is
begin
&ILog(log_fname, true)
&WLog('Начало выполнения операции "'||&METHOD$NAME||'" (' || &METHOD$SNAME || ')')
end;
Procedure Endlog
is
begin
&WLog('Операция "'||&METHOD$NAME||'" (' || &METHOD$SNAME || ') завершена')
&ILog(null, null)
end;
function add_rec ( p_str out varchar2(1000)
,p_target_group ::[DP_UPDATE_ACS].[TARGET_GROUP]%type
,p_obj_class ::[DP_UPDATE_ACS].[OBJ_CLASS]%type
,p_obj_method ::[DP_UPDATE_ACS].[OBJ_METHOD]%type
,p_obj_view ::[DP_UPDATE_ACS].[OBJ_VIEW]%type
,p_obj_group ::[DP_UPDATE_ACS].[OBJ_GROUP]%type
) return ref [DP_UPDATE_ACS] is
obj_ref ref [DP_UPDATE_ACS];
obj_obj [DP_UPDATE_ACS];
count_parameters_with_value number;
begin
-- проверки
if p_target_group is null then
p_str := 'Ошибка ! Не указана группа (TARGET_GROUP), которой будет дан доступ на объект';
return null;
end if;
if p_obj_class is null and p_obj_method is null and p_obj_view is null and p_obj_group is null then
p_str := 'Ошибка ! Для группы '||p_target_group||', вы не указали класс операции, не указали короткое имя операции, не указали представление и не указали группу, в которую может входить '||p_target_group;
return null;
end if;
if p_obj_class is not null and p_obj_method is null and p_obj_view is null then
p_str := 'Ошибка ! Для группы '||p_target_group||', вы указали класс(ТБП), но не указали короткое имя операции или представления';
return null;
end if;
if p_obj_class is null and p_obj_method is not null then
p_str := 'Ошибка ! Для группы '||p_target_group||', вы указали короткое имя операции, но не указали класс(ТБП) операции';
return null;
end if;
count_parameters_with_value := 0;
if p_obj_class is not null and p_obj_method is not null then
count_parameters_with_value := count_parameters_with_value +1;
end if;
if p_obj_group is not null then
count_parameters_with_value := count_parameters_with_value +1;
end if;
if p_obj_view is not null then
count_parameters_with_value := count_parameters_with_value +1;
end if;
if count_parameters_with_value > 1 then
p_str := 'Ошибка ! При каждом вызове функции, доступ может быть дан только на один объект (операция, представление или другая группа), а вы для группы '||p_target_group||' передали OBJ_CLASS='||p_obj_class||' OBJ_METHOD='||p_obj_method||' OBJ_VIEW='||p_obj_view||' OBJ_GROUP='||p_obj_group;
return null;
end if;
-- проверки закончены
-- Если не передан класс для представления, то нужно его определить
if p_obj_view is not null and p_obj_class is null then
begin
select x(x.[CLASS_ID])
in criteria%rowtype
where x.[SHORT_NAME] = p_obj_view
into p_obj_class;
exception
when NO_DATA_FOUND or TOO_MANY_ROWS then
p_str := 'Ошибка при поиске представления с коротким именем ' || p_obj_view;
return null;
end;
end if;
-- поиск записи в справочнике, если нет, добавляем
begin
select x(x) in ::[DP_UPDATE_ACS]
where x.[TARGET_GROUP] = p_target_group
and
( (x.[OBJ_CLASS] = p_obj_class and x.[OBJ_METHOD] = p_obj_method)
or x.[OBJ_GROUP] = p_obj_group
or x.[OBJ_VIEW] = p_obj_view
)
into obj_ref;
p_str := 'Запись для группы '||p_target_group||' уже существует для OBJ_CLASS='||p_obj_class||' OBJ_METHOD='||p_obj_method||' OBJ_VIEW='||p_obj_view||' OBJ_GROUP='||p_obj_group;
return obj_ref;
exception
when NO_DATA_FOUND then
obj_obj := null;
obj_obj.[TARGET_GROUP] := upper(p_target_group) ;
obj_obj.[OBJ_CLASS] := upper(p_obj_class) ;
obj_obj.[OBJ_GROUP] := upper(p_obj_group) ;
obj_obj.[OBJ_METHOD] := upper(p_obj_method) ;
obj_obj.[OBJ_VIEW] := upper(p_obj_view) ;
obj_ref := ::[DP_UPDATE_ACS]%insert(obj_obj);
p_str := 'Для группы '||p_target_group||' была создана запись с OBJ_CLASS='||p_obj_class||' OBJ_METHOD='||p_obj_method||' OBJ_VIEW='||p_obj_view||' OBJ_GROUP='||p_obj_group;
return obj_ref;
when TOO_MANY_ROWS then
p_str := 'Ошибка ! Для группы '||p_target_group||' обнаружены несколько записей с OBJ_CLASS='||p_obj_class||' OBJ_METHOD='||p_obj_method||' OBJ_VIEW='||p_obj_view||' OBJ_GROUP='||p_obj_group;
return null;
end;
end;
v_str varchar2(1000);
obj_ref ref [DP_UPDATE_ACS];
begin
initlog;
&WLog('Начало операции')
obj_ref := add_rec(v_str, 'NCB_CM_ALL_USERS', 'FM',null,'VW_CRIT_FM_START_FORM_CC',null);
&WLog(v_str)
obj_ref := add_rec(v_str, 'FM_SERV_OP_CRED', 'FM',null,'VW_CRIT_FM_START_FORM_CC',null);
&WLog(v_str)
obj_ref := add_rec(v_str, 'NCB_CM_ALL_USERS', 'FM',null,'VW_CRIT_FM_START_FORM_CS',null);
&WLog(v_str)
obj_ref := add_rec(v_str, 'FM_SERV_OP_CRED', 'FM',null,'VW_CRIT_FM_START_FORM_CS',null);
&WLog(v_str)
obj_ref := add_rec(v_str, 'NCB_CM_ALL_USERS', 'FM',null,'VW_CRIT_FM_START_FORM_LA',null);
&WLog(v_str)
obj_ref := add_rec(v_str, 'FM_SERV_OP_CRED', 'FM',null,'VW_CRIT_FM_START_FORM_LA',null);
&WLog(v_str)
&WLog('Окончание операции')
Endlog;
end;
|
4. Запустить операцию "Обновление групп доступа"
На выходе получаем искомый результат |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|