Използване на привилегирован режим, методически материали на учебен център "Стимул" - обучение

  • извършва операции с данни от името на потребители, за които данните не са достъпни;
  • ускорете работата, тъй като в привилегирован режим няма ограничения за достъп до данни.

1.2. Трябва да се използва привилегирован режим

  • когато се изисква от логическа гледна точка да се деактивира проверката на правата;
  • когато е допустимо да се деактивира проверката на правата, за да се ускори работата и в същото време работата с данни от името на потребителя логично не нарушава зададените му права за достъп.

2. По-долу са някои типични сценарии за използване на привилегирован режим.

2.1.Ако подчинените регистри (движения на документи) се изискват от потребителя за получаване на отчети, тогава такива регистри трябва да бъдат оставени само за четене и записването в такива регистри трябва да се извършва чрез превключване към привилегирован режим. При този подход проверката на разрешението за запис се извършва само за регистратора.

Например конфигурацията съдържа обекти с метаданни:

  • Документ. Осчетоводяване на стоки
  • Регистър на натрупване. Остатъци от склад
  • Отчет.Инвентаризация.

ДокументътФактуриране на стоки прави движения в регистъра за натрупванеСалда в складове при осчетоводяване в привилегирован режим. Потребителят не трябва да променя директно регистъра, но е необходимо да генерира отчетBalancesInWarehouses, който чете данните от регистъра. Следователно е достатъчно потребителят да даде само правото да чете регистъра.

2.2.Ако регистрите не се изискват от потребителя нито за целите на докладване, нито в командния интерфейс, тогава на потребителя не трябва да се дава разрешение да ги чете. Четене или запис на данни в такиварегистрите се изпълняват чрез превключване в привилегирован режим.

Например конфигурацията има информационен регистърSubsystemVersions, който не се отчита и може да бъде достъпен само чрез специални функции на общия модул. В този случай не трябва да давате на потребителите никакъв достъп до регистъра.

2.3.Ако разрешена от потребителя операция изисква предварително недостъпни данни, тогава те трябва да бъдат получени чрез превключване към привилегирован режим, но с гаранция за предотвратяване на предаването на тези данни към страната на клиента и с гаранция за използването им на сървъра само за извършване на планираната операция.

Например, ако конфигурацията съдържа обекти с метаданни

  • Документ. Продажба на стоки и услуги
  • Регистрирайте Натрупване.Продажби
  • Натрупващ регистър.Взаимни разчети

и е необходимо това

  • публикуването на документа от името на склададжия промени регистъра на продажбите, но регистърът на продажбите остана недостъпен за склададжия.
  • при осчетоводяване на документа от името на склада се проверява състоянието на взаимните разплащания, но регистърът на взаимните разчети остава недостъпен за склада.

2.4. Привилегированият режим също трябва да се използваот съображения за ефективност, когато не води до действия или данни, които не са разрешени от потребителя.

Пример 1. Изпълнява се заявка, за която стойностите на параметрите на филтъра вече са преминали проверката за ограничаване на правата на ниво запис. Тогава самата заявка може да се изпълни в привилегирован режим, за да се подобри нейната производителност. Превключването към привилегирован режим, например при извличане на данни за отчет, трябва да бъде внимателно планирано, за да се гарантира, чепредотвратяване на получаване на данни, които не са разрешени от потребителя.

Пример 2: Параметърът на сесията"Текущ потребител" не е наличен в нито една роля. Следната функция се използва за получаване на стойността:

3. В същото време неоправданото използване на привилегирован режим може да доведе до проблеми със сигурността на потребителските данни.

3.1. Всички процедури и функции за експортиране, които извършват каквито и да било действия на сървъра с предварително зададен безусловно привилегирован режим, са потенциално опасни, тъй като това деактивира проверката на правата за достъп на текущия потребител. Процедурите за експортиране и функциите на клиентския API на сървъра 1C:Enterprise изискват специално внимание.

3.2. В случаите, когато се осъществява достъп до процедура или функция за експортиране в сесия с недостатъчно ниво на права за достъп, трябва да се хвърли стандартен вид изключение (вижте метода на платформатаPerformAccessCheck ).

По правило това не изисква никакви проверки в кода, тъй като ако конфигурацията има роли и ограничения за достъп до данни на ниво запис (RLS), ще бъде хвърлено изключение при опит за достъп до недостъпни данни:

  • при изпълнение на заявка без ключовата думаALLOWED ;
  • при извикване на методаGetObject "от" препратка към недостъпен обект;
  • при извикване на недостъпен метод от глобалния контекст;
  • и в други подобни случаи.

Ако трябва да проверите правата за достъп ръчно, трябва да използвате методаPerformAccessPermissionCheck. Пример за предварителна проверка преди извършване на действия в привилегирован режим:

Вижте също: Прихващане на изключения в кода

4. Да отидете напривилегирован режим, трябва да използвате следните функции на платформата1C:Enterprise :

    При внедряване на логиката на осчетоводяване и отмяна на осчетоводяване на документи в манипулаторите на модула за документиОбработка на осчетоводяване иОбработка на изтриване на осчетоводяване :