CftClub.ru
Клуб специалистов ЦФТ-Банк

3l как добавить вьюху в Заявки для обработки > Представлен

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеСр Фев 22, 2017 17:14   3l как добавить вьюху в Заявки для обработки >Представлен Ответить с цитатой
Полезность: Нет оценки
3l как добавить вьюху в Заявки для обработки > Представление для отображения?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Фев 27, 2017 09:53   Re: 3l как добавить вьюху в Заявки Ответить с цитатой
Полезность: Нет оценки
Матвеев Евгений пишет:
3l как добавить вьюху в Заявки для обработки > Представление для отображения?


чувствуется, хорошо отметил 23-е Smile
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеПн Фев 27, 2017 09:55   Re: 3l как добавить вьюху в Заявки Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Матвеев Евгений пишет:
3l как добавить вьюху в Заявки для обработки > Представление для отображения?


чувствуется, хорошо отметил 23-е Smile


Приветствую, да вроде как обычно...
С праздничком

Данный вопрос закрыт, разобрался
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. Запустить операцию "Обновление групп доступа"

На выходе получаем искомый результат
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru