26 февраля 2015 г.

Администрирование пользователей в бухгалтерии Парус

Несколько скриптов для облегчения добавления ролей в бухгалтерии "ПАРУС"

  • Смотрим роли по организации:  

    
select RN,ROLENAME from parus.ROLES
  where 
     rolename like '%N219%' and
     rolename not like 'dd%'
  order by rolename   ;

  • Добавление пользователю ролей по списку:  

    
declare
  nrn number;
  cnt pls_integer;
  login_to varchar2(100);
  role_to number;
  type array_t is varray(4) of number;
  array1 array_t := array_t(412675597,14104312,15162844,8115887);
begin
  login_to   := 'USER_LOGIN_TO!!!';
  for i in 1..array1.count loop
    role_to := array1(i);  
      select count(*) into cnt from parus.userroles tt where tt.roleid=role_to and tt.authid=login_to;
      if cnt=0 then  
          parus.P_USERROLES_BASE_INSERT(role_to, login_to, nrn);
      end if;    
  end loop;   
end;

commit;

  • Добавление ролей по названию:  

    
declare
  nrn number;
  cnt pls_integer;
  login_to varchar2(100);
begin
  login_to   := 'USER_LOGIN_TO!!!';
  for i in (select RN,ROLENAME from parus.ROLES where (rolename like '%ДГПкаN110%'  ) and rolename not like 'dd%' order by rolename )
  loop
      select count(*) into cnt from parus.userroles tt where tt.roleid=i.RN and tt.authid=login_to;
      if cnt=0 then  
          dbms_output.put_line('added for '||login_to||'   '||i.ROLENAME);
          parus.P_USERROLES_BASE_INSERT(i.RN, login_to,nrn);
      end if;    
  end loop;   
end;

commit;

  • Копирование всех ролей одного пользователя другому:  

    
declare
  nrn number;
  cnt pls_integer;
  login_from varchar2(100);
  login_to varchar2(100);
begin
  login_from := 'USER_LOGIN_FROM!!!';
  login_to   := 'USER_LOGIN_TO!!!';
  for i in (
    select * from parus.userroles t where t.authid=login_from) loop
      select count(*) into cnt from parus.userroles tt where tt.roleid=i.roleid and tt.authid=login_to;
      if cnt=0 then  
        parus.P_USERROLES_BASE_INSERT(i.roleid,login_to,nrn);
      end if;  
    end loop;
end;

commit;

  • удаление роли:  

    
select t.RN, t.ROLEID,t.AUTHID,r.ROLENAME 
  from parus.userroles t,
       parus.ROLES r 
  where t.ROLEID=r.RN and 
    t.authid='USER_LOGIN_TO!!!'
  order by r.ROLENAME  ;

begin
  PARUS.P_USERROLES_BASE_DELETE(1762104080);
end;