클라이언트의 현재 1s 8.3 사용자입니다. 구성 역할에 대한 정보를 얻는 방법

1C:Enterprise에서 고려 중인 매개변수는 메타데이터 개체로 표시됩니다. 본질적으로 이는 현재 세션에 바인딩된 전역 변수에 지나지 않습니다.

전역 변수는 다른 변수와 동일하지만 그 특징은 프로그램의 어느 곳에서나 액세스할 수 있다는 점이며, 세션 매개변수의 경우 현재 세션 내에서만 작동합니다.

왜냐하면 세션 매개변수메타데이터 개체이므로 다음과 같은 특정 기능이 있습니다.

  • 특정 유형일 수 있습니다.허용되는 유형은 플랫폼에 따라 결정됩니다. 그 목록은 상당히 광범위하지만 이 목록당신이 필요하지 않습니다. 언제든지 값을 직렬화하고 매개 변수에 문자열로 저장할 수 있습니다.
  • 다른 메타데이터 개체와 마찬가지로 이에 대한 권한은 역할(쓰기 및 읽기 모두)에 따라 제한될 수 있습니다. 다만, RLS에서 사용할 때 특이한 점이 있는데 이에 대해서는 아래에서 다루도록 하겠다.
  • 직렬화된 형식으로 배치할 수 있는 데이터 양에는 제한이 있습니다.볼륨은 4GB를 초과할 수 없습니다.

세션 매개변수 유형이 다음과 같은 경우:

  • 고정배열
  • 고정컬렉션
  • 고정구조

그러면 컬렉션 요소의 값은 다음과 같을 수 있습니다. 한정되지 않은.

매개변수의 주요 영역은 RLS(Record Level Access Restriction) 쿼리에서 해당 값을 사용하는 것입니다.

예를 들어 RLS 요청에서 현재 사용자에 대한 조건을 설정해야 합니다. 이를 위해 “CurrentUser” 세션 매개변수를 설정하고 내장 언어 코드에서 값을 설정합니다.

SessionParameters.CurrentUser =<значение>

Table.User = 현재사용자(&CurrentUser)

이런 방식으로 세션 매개변수를 사용하는 경우 매개변수에 대한 읽기 권한은 고려되지 않지만 내장 언어에서 해당 값을 가져올 수 있습니다.

CurrentUser = SessionParameters.CurrentUser;


세션 매개변수, 즉 해당 값은 프로그래밍 방식으로만 서버에서만 설정할 수 있습니다. 이렇게 하려면 클라이언트에서 서버 프로시저를 호출해야 합니다. 세션 매개변수에 접근(설정, 수신) 시 매개변수가 초기화되지 않으면 해당 프로시저가 호출됩니다. 설정세션 매개변수세션 모듈에서. 이 프로시저에는 매개변수가 하나 있습니다. 필수 매개변수– 설정된 세션 매개변수 식별자의 배열. 설정세션 매개변수연결을 설정할 때도 호출됩니다. 정보 베이스다른 모든 핸들러를 호출하기 전에. 이 경우 필수 매개변수평등할 것이다 한정되지 않은.

지연된(지연) 초기화를 사용하는 것이 좋습니다. 즉, 시스템 시작 시 모든 세션 매개변수가 직접 필요한 것은 아니기 때문에 시스템 시작 시가 아닌 요청 시 세션 매개변수를 초기화하는 것이 좋습니다. 지연 초기화는 다음과 같이 수행됩니다.

절차 설정SessionParameters(SessionParametersNames) SessionParametersNames가 정의되지 않은 경우 ParameterName = "CurrentUser"인 경우 SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" ThenSessionParameters.CurrentOrganization = ; // 등. endIf; endIf; EndProcedure값>값>>

세션 매개변수가 세션에 바인딩되어 있기 때문에 백그라운드에서 실행되는 메서드에서 세션 매개변수에 액세스할 수 없습니다. 왜냐하면 다른 세션이기 때문입니다. 이런 뉘앙스는 의외일 수 있으므로, 원하는 값을 메소드 매개변수로 전달하고, 절차 시작 시 세션 매개변수에서 초기화하여 미리 대비해 두는 것이 좋습니다.

  • 현재 릴리스 1C
  • 1C 플랫폼의 코드 예
1C 8.x의 역할, 액세스 권한
현재 사용자가 특정 역할을 사용할 수 있는지 어떻게 알 수 있나요?
If Not RoleAvailable("Manager") Then Report("고객의 요청을 볼 수 없습니다!"); endIf;
구성 역할에 대한 정보를 얻으려면 어떻게 해야 합니까?
가능한 역할의 함수 목록Configuration() 역할 목록 = 새로운 값 목록; RolesConfiguration = Metadata.Roles; RoleConfiguration 루프의 각 역할에 대해 RoleList.Add(Role.Name); 엔드사이클; returnListRole; EndFunction
권한을 확인하지 않고 코드를 실행하는 방법은 무엇입니까?
1. 권한 있는 모듈 사용 2. 배치 프로그램 코드는 제약 조건 제어 없이 실행되어야 하며 모듈에 대해 PRIVILEGE 플래그가 설정된 공통 모듈로 실행되어야 합니다. 권한 있는 프로그램 코드 실행 모드를 사용합니다. 권한 있는 모듈의 코드 작동 모드와 유사합니다. 내장된 언어인 SetPrivilegedMode(를 사용하여 모드를 켜거나 끌 수 있습니다.<Включить>) 매개변수<Включить>(필수) 유형: 부울. 특권 모드를 활성화할지 여부를 결정합니다. True - 모드를 활성화합니다. 거짓 - 모드를 끕니다. PrivilegedMode() 함수를 사용하면 권한 모드가 활성화되었는지 여부를 결정할 수 있습니다. 권한 모드를 사용하면 첫째, 데이터 액세스에 대한 제한이 적용되지 않으므로 작업 속도가 빨라지고, 둘째, 이 데이터를 사용할 수 없는 사용자를 대신하여 데이터 작업을 수행할 수 있습니다. 논리적으로 권한 확인을 비활성화해야 하거나 작업 속도를 높이기 위해 권한 확인을 비활성화할 수 있는 경우 권한 모드를 권장합니다. 특정 사용자를 대신하여 데이터로 작업하는 것이 이 사용자에 대해 설정된 액세스 권한을 위반하지 않는 경우 특권 모드를 사용하는 것이 허용됩니다.

5
더 많은 것이 필요할 때 미세 조정액세스하면 RLS - 레코드 수준 보안 메커니즘이 구출됩니다. 시스템 구성 "1C:Enterprise" 8은 처음에 여러 회사 회계를 위한 프로그램으로 포지셔닝되었으며... 3
1C Enterprise 시스템의 플랫폼 8.0부터 레코드 수준에서 사용자 액세스 권한을 제한할 수 있습니다. 이를 위해 RLS(Record Level Security) 메커니즘이 사용됩니다. 이러한 "미세한" 튜닝은... 3
나는 종종 관련 질문을 접하게 된다. 소프트웨어 생성및 사용자 권한 설정. 이 기사에서는 프로그래밍 방식으로 사용자를 생성하는 일반 및 관리형 애플리케이션에 대한 예를 제공합니다. 2
질문: 새 사용자를 추가했습니다. 내가 만든다 새로운 인터페이스(기존 인터페이스를 복사하여) 이 인터페이스를 이 사용자의 기본 인터페이스로 지정합니다. 문제는 새로운 인터페이스가 생성되었다는 것입니다.