---
title: Управление доступом
slug: bsp/управление-доступом
---


## ЕстьРоль
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Проверяет, что у пользователя есть роль (дополнительное право) в одном из профилей тех групп доступа,
// в которых он участвует с учетом того, что хотя бы одна группа доступа профиля предоставляет
// право Чтение объекта (или набор значений доступа разрешен для группы доступа).
//
// Для проверки только роли следует использовать функцию Пользователи.РолиДоступны.
//
// Параметры:
//  Роль           - Строка - имя роли.
//
//  СсылкаНаОбъект - ЛюбаяСсылка - на объект, для которого заполняются наборы значений доступа
//                   для проверки права Чтение.
//                 - ТаблицаЗначений - таблица произвольных наборов значений доступа с колонками:
//                     * НомерНабора     - Число  - номер, группирующий несколько строк в отдельный набор.
//                     * ВидДоступа      - Строка - имя вида доступа, указанного в переопределяемом модуле.
//                     * ЗначениеДоступа - ОпределяемыйТип.ЗначениеДоступа - тип значения доступа,
//                       указанного в переопределяемом модуле.
//                       Пустую подготовленную таблицу можно получить с помощью функции
//                       ТаблицаНаборыЗначенийДоступа общего модуля УправлениеДоступом
//                       (колонки Чтение, Изменение не заполнять).
//
//  Пользователь   - СправочникСсылка.Пользователи
//                 - СправочникСсылка.ВнешниеПользователи
//                 - Неопределено - если параметр не указан,
//                     тогда право проверяется для текущего пользователя.
//
// Возвращаемое значение:
//  Булево - если Истина, тогда у пользователя есть роль с учетом ограничений.
//
Функция ЕстьРоль(Знач Роль, Знач СсылкаНаОбъект = Неопределено, Знач Пользователь = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ЕстьРоль(Роль, СсылкаНаОбъект, Пользователь);
```
</details>

## ЕстьПраво
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Проверяет, что для пользователя настроено разрешение права для объекта.
//  Например, для папки файлов могут быть настроены права "УправлениеПравами", "Чтение", "ИзменениеПапок",
// причем право "Чтение" является как правом для папки файлов, так и правом для файлов.
//
// Параметры:
//  Право          - Строка - имя права, как оно указано в процедуре ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов
//                   общего модуля УправлениеДоступомПереопределяемый.
//
//  СсылкаНаОбъект - СправочникСсылка
//                 - ПланВидовХарактеристикСсылка - ссылка на одного из владельцев прав,
//                   указанных в процедуре ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов
//                   общего модуля УправлениеДоступомПереопределяемый, например ссылка на папку файлов.
//
//  Пользователь   - СправочникСсылка.Пользователи
//                 - СправочникСсылка.ВнешниеПользователи
//                 - Неопределено - если параметр не указан,
//                     тогда право проверяется для текущего пользователя.
//
// Возвращаемое значение:
//  Булево - если Истина, то настроено разрешение права с учетом всех разрешающих и
//           запрещающих настроек в иерархии.
//
Функция ЕстьПраво(Право, СсылкаНаОбъект, Знач Пользователь = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ЕстьПраво(Право, СсылкаНаОбъект, Пользователь);
```
</details>

## ЧтениеРазрешено
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Проверяет, что на уровне записей (и на уровне прав) указанному пользователю
// разрешено чтение объекта или набора записей из базы данных.
//
// Важно: если подсистема работает в стандартном варианте, тогда
// а) если указан пользователь, но не текущий пользователь, то будет вызвано исключение;
// б) выполняется проверка только объекта в базе данных (объект в памяти не проверяется).
// Для проверки варианта работы предусмотрена функция ПроизводительныйВариант.
//
// Параметры:
//  ОписаниеДанных - СправочникСсылка
//                 - ДокументСсылка
//                 - ПланВидовХарактеристикСсылка
//                 - ПланСчетовСсылка
//                 - ПланВидовРасчетаСсылка
//                 - БизнесПроцессСсылка
//                 - ЗадачаСсылка
//                 - ПланОбменаСсылка - ссылка на объект в базе данных, который требуется проверить.
//                 - РегистрСведенийКлючЗаписи
//                 - РегистрНакопленияКлючЗаписи
//                 - РегистрБухгалтерииКлючЗаписи
//                 - РегистрРасчетаКлючЗаписи - ключ записи в базе данных, которую требуется проверить.
//                 - СправочникОбъект
//                 - ДокументОбъект
//                 - ПланВидовХарактеристикОбъект
//                 - ПланСчетовОбъект
//                 - ПланВидовРасчетаОбъект
//                 - БизнесПроцессОбъект
//                 - ЗадачаОбъект
//                 - ПланОбменаОбъект - объект в памяти и базе данных, которые требуется проверить.
//                 - РегистрСведенийНаборЗаписей
//                 - РегистрНакопленияНаборЗаписей
//                 - РегистрБухгалтерииНаборЗаписей
//                 - РегистрРасчетаНаборЗаписей - набор записей в памяти и базе данных, которые требуется проверить.
//                     В структуре ДополнительныеСвойства можно вставить необязательное свойство
//                     Замещение (Булево, РежимЗамещения), если не указано, тогда считается равным Истина.
//                     Если Замещение равно Ложь или РежимЗамещения.Добавление, тогда записи в базе данных
//                     не проверяются. Если Замещение равно Истина или РежимЗамещения.Замещение,
//                     тогда записи для проверки будут получены из базы данных по настройке свойства Отбор,
//                     в противном случае по ключам строк записей в наборе записей.
//
//  Пользователь   - СправочникСсылка.Пользователи
//                 - СправочникСсылка.ВнешниеПользователи
//                 - Неопределено - текущий пользователь.
//                   Когда параметр указан, привилегированный режим не учитывается.
//                   Для проверки прав не текущего пользователя требуются административные права.
//
// Возвращаемое значение:
//  Булево
//
Функция ЧтениеРазрешено(ОписаниеДанных, Пользователь = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ЧтениеРазрешено(ОписаниеДанных, Пользователь);
```
</details>

## ИзменениеРазрешено
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Проверяет, что на уровне записей (и на уровне прав) указанному пользователю
// разрешено изменение объекта в базе данных на объект в памяти.
// Для нового объекта проверяется только объект в памяти.
// Если указана ссылка или ключ записи, проверятся только объект в базе данных.
//
// Важно: если подсистема работает в стандартном варианте, тогда
// а) если указан пользователь, но не текущий пользователь, то будет вызвано исключение;
// б) выполняется проверка только объекта в базе данных (объект в памяти не проверяется),
//    причем на уровне записей проверяется только право Чтение,
//    а право Изменение проверяется на таблицу в целом.
// Для проверки варианта работы предусмотрена функция ПроизводительныйВариант.
//
// Параметры:
//  ОписаниеДанных - СправочникСсылка
//                 - ДокументСсылка
//                 - ПланВидовХарактеристикСсылка
//                 - ПланСчетовСсылка
//                 - ПланВидовРасчетаСсылка
//                 - БизнесПроцессСсылка
//                 - ЗадачаСсылка
//                 - ПланОбменаСсылка - ссылка на объект в базе данных, который требуется проверить.
//                 - РегистрСведенийКлючЗаписи
//                 - РегистрНакопленияКлючЗаписи
//                 - РегистрБухгалтерииКлючЗаписи
//                 - РегистрРасчетаКлючЗаписи - ключ записи в базе данных, которую требуется проверить.
//                 - СправочникОбъект
//                 - ДокументОбъект
//                 - ПланВидовХарактеристикОбъект
//                 - ПланСчетовОбъект
//                 - ПланВидовРасчетаОбъект
//                 - БизнесПроцессОбъект
//                 - ЗадачаОбъект
//                 - ПланОбменаОбъект - объект в памяти и базе данных, который требуется проверить.
//                 - РегистрСведенийНаборЗаписей
//                 - РегистрНакопленияНаборЗаписей
//                 - РегистрБухгалтерииНаборЗаписей
//                 - РегистрРасчетаНаборЗаписей - набор записей в памяти и базе данных, которые требуется проверить.
//                     В структуре ДополнительныеСвойства можно вставить необязательное свойство
//                     Замещение (Булево, РежимЗамещения), если не указано, тогда считается равным Истина.
//                     Если Замещение равно Ложь или РежимЗамещения.Добавление, тогда записи в базе данных
//                     не проверяются. Если Замещение равно Истина или РежимЗамещения.Замещение,
//                     тогда записи для проверки будут получены из базы данных по настройке свойства Отбор,
//                     в противном случае по ключам строк записей в наборе записей.
//
//  Пользователь   - СправочникСсылка.Пользователи
//                 - СправочникСсылка.ВнешниеПользователи
//                 - Неопределено - текущий пользователь.
//                   Когда параметр указан, привилегированный режим не учитывается.
//                   Для проверки прав не текущего пользователя требуются административные права.
//
// Возвращаемое значение:
//  Булево
//
Функция ИзменениеРазрешено(ОписаниеДанных, Пользователь = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ИзменениеРазрешено(ОписаниеДанных, Пользователь);
```
</details>

## ПроверитьЧтениеРазрешено
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Делает тоже, что функция ЧтениеРазрешено, но если не разрешено, вызывается исключение.
//
// Параметры:
//  ОписаниеДанных - см. ЧтениеРазрешено.ОписаниеДанных
//
Процедура ПроверитьЧтениеРазрешено(ОписаниеДанных) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ПроверитьЧтениеРазрешено(ОписаниеДанных) 
```
</details>

## ПроверитьИзменениеРазрешено
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Делает тоже, что функция ИзменениеРазрешено, но если не разрешено, вызывается исключение.
//
// Параметры:
//  ОписаниеДанных - см. ИзменениеРазрешено.ОписаниеДанных
//
Процедура ПроверитьИзменениеРазрешено(ОписаниеДанных) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ПроверитьИзменениеРазрешено(ОписаниеДанных) 
```
</details>

## ПраваДоступаКДанным
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает права Чтение и Изменение указанных или всех пользователей и
// внешних пользователей на указанный существующий элемент данных или их массив.
// Для использования требуются административные права или привилегированный режим.
// Служебные пользователи пропускаются.
//
// Если объект не существует или на него не рассчитаны права, тогда для него вернется пустой список прав.
// Аналогично, если записей регистра не существует, тогда для них вернется пустой список прав.
// Если имя поля ключа записи регистра совпадает с именем одной из колонок возвращаемой таблицы
// "ПользовательСПравом" или "ПравоИзменение", тогда оно будет дополнено нижним подчеркиванием слева.
//
// В отличие от функций ЧтениеРазрешено, ИзменениеРазрешено и
// процедур ПроверитьЧтениеРазрешено, ПроверитьИзменениеРазрешено,
// права для текущего пользователя возвращаются по состоянию в базе данных,
// а не по состоянию сеанса (если права были изменены после запуска сеанса).
//
// Важно: требуется производительный вариант ограничения доступа.
// Для проверки варианта работы предусмотрена функция ПроизводительныйВариант.
//
// Параметры:
//  ОписаниеДанных - СправочникСсылка
//                 - ДокументСсылка
//                 - ПланВидовХарактеристикСсылка
//                 - ПланСчетовСсылка
//                 - ПланВидовРасчетаСсылка
//                 - БизнесПроцессСсылка
//                 - ЗадачаСсылка
//                 - ПланОбменаСсылка - ссылка на объект.
//                 - Массив из СправочникСсылка
//                 - Массив из ДокументСсылка
//                 - Массив из ПланВидовХарактеристикСсылка
//                 - Массив из ПланСчетовСсылка
//                 - Массив из ПланВидовРасчетаСсылка
//                 - Массив из БизнесПроцессСсылка
//                 - Массив из ЗадачаСсылка
//                 - Массив из ПланОбменаСсылка - массив ссылок на объекты одного типа.
//                 - РегистрСведенийКлючЗаписи
//                 - РегистрНакопленияКлючЗаписи
//                 - РегистрБухгалтерииКлючЗаписи
//                 - РегистрРасчетаКлючЗаписи - ключ записи,
//                     по которому определяется запись в базе данных для получения прав.
//                 - РегистрСведенийНаборЗаписей
//                 - РегистрНакопленияНаборЗаписей
//                 - РегистрБухгалтерииНаборЗаписей
//                 - РегистрРасчетаНаборЗаписей - набор записей с настроенным свойством Отбор,
//                     по которому определяются записи в базе данных для получения прав.
//                     Если свойство Отбор не установлено, а набор записей непустой,
//                     тогда будут возвращены права для записей, содержащихся в наборе записей
//                     (у записей в наборе записей используются только значения измерений).
//
//  ДляВнешнихПользователей - Булево - если Истина, тогда вернуть права для внешних пользователей.
//                          - Неопределено - вернуть для пользователей и внешних пользователей.
//
//  СоставПользователей - Неопределено - вернуть всех пользователей, у которых есть права.
//                      - Массив из СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи - список
//                        пользователей для которых нужно вернуть права, если есть.
//
// Возвращаемое значение:
//  ТаблицаЗначений:
//    * ПользовательСПравом - СправочникСсылка.Пользователи
//                          - СправочникСсылка.ВнешниеПользователи - пользователь, если есть хотя бы право Чтение.
//    * ПравоИзменение - Булево - Истина, если есть право Изменение и право Чтение,
//                                Ложь, если есть только право Чтение.
//    <Поле Ссылка или поля ключа записи регистра>.
//
Функция ПраваДоступаКДанным(ОписаниеДанных, ДляВнешнихПользователей = Ложь, СоставПользователей = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ПраваДоступаКДанным(ОписаниеДанных, ДляВнешнихПользователей, СоставПользователей);
```
</details>

## ВключитьПрофильПользователю
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Назначение пользователю профиля групп доступа путем включения
// в персональную группу доступа (только для упрощенной настройки прав).
//
// Параметры:
//  Пользователь - СправочникСсылка.Пользователи
//               - СправочникСсылка.ВнешниеПользователи - требуемый пользователь.
//  Профиль      - СправочникСсылка.ПрофилиГруппДоступа - профиль, для которого нужно найти или создать персональную
//                   группу доступа и включить в нее пользователя.
//               - УникальныйИдентификатор - уникальный идентификатор поставляемого профиля,
//                   с помощью которого нужно найти профиль групп доступа.
//               - Строка - имя поставляемого профиля,
//                   с помощью которого нужно найти профиль групп доступа.
//
Процедура ВключитьПрофильПользователю(Пользователь, Профиль) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ВключитьПрофильПользователю(Пользователь, Профиль) 
```
</details>

## ВыключитьПрофильПользователю
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Отмена назначения пользователю профиля групп доступа путем исключения
// из персональной группы доступа (только для упрощенной настройки прав).
//
// Параметры:
//  Пользователь - СправочникСсылка.Пользователи
//               - СправочникСсылка.ВнешниеПользователи - требуемый пользователь.
//  Профиль      - СправочникСсылка.ПрофилиГруппДоступа - профиль, для которого нужно найти или создать персональную
//                    группу доступа и включить в нее пользователя.
//               - УникальныйИдентификатор - уникальный идентификатор поставляемого профиля,
//                    с помощью которого нужно найти профиль групп доступа.
//               - Строка - имя поставляемого профиля,
//                    с помощью которого нужно найти профиль групп доступа.
//               - Неопределено - выключить пользователю все профили.
//
Процедура ВыключитьПрофильПользователю(Пользователь, Профиль = Неопределено) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ВыключитьПрофильПользователю(Пользователь, Профиль);
```
</details>

## ОграничиватьДоступНаУровнеЗаписей
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Проверяет, используется ли ограничение доступа на уровне записей.
//
// Возвращаемое значение:
//  Булево - если Истина, тогда доступ ограничивается на уровне записей.
//
Функция ОграничиватьДоступНаУровнеЗаписей() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() 
```
</details>

## ПроизводительныйВариант
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает вариант работы ограничений доступа на уровне записей.
//
// Требуется при расширенном использовании функций
// ЧтениеРазрешено и ИзменениеРазрешено в производительном варианте.
//
// Возвращаемое значение:
//  Булево - если Ложь, стандартный вариант, иначе производительный.
//
Функция ПроизводительныйВариант() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ПроизводительныйВариант() 
```
</details>

## ПриЧтенииНаСервере
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Обработчик события формы ПриЧтенииНаСервере, который встраивается в формы элементов справочников,
// документов, записей регистров и др., чтобы заблокировать форму, если изменение запрещено.
//
// Параметры:
//  Форма               - ФормаКлиентскогоПриложения - форма элемента объекта или записи регистра.
//
//  ТекущийОбъект       - СправочникОбъект
//                      - ДокументОбъект
//                      - ПланВидовХарактеристикОбъект
//                      - ПланСчетовОбъект
//                      - ПланВидовРасчетаОбъект
//                      - БизнесПроцессОбъект
//                      - ЗадачаОбъект
//                      - ПланОбменаОбъект - проверяемый объект.
//                      - РегистрСведенийМенеджерЗаписи - менеджер проверяемой записи.
//                      - РегистрСведенийНаборЗаписей
//                      - РегистрНакопленияНаборЗаписей
//                      - РегистрБухгалтерииНаборЗаписей
//                      - РегистрРасчетаНаборЗаписей - набор проверяемых записей.
//
Процедура ПриЧтенииНаСервере(Форма, ТекущийОбъект) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ПриЧтенииНаСервере(Форма, ТекущийОбъект) 
```
</details>

## ПослеЗаписиНаСервере
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Обработчик события формы ПослеЗаписиНаСервере, который встраивается в формы
// элементов справочников, документов, записей регистров и др., чтобы ускорить
// запуск обновления доступа зависимых объектов, когда обновление запланировано.
//
// Параметры:
//  Форма           - ФормаКлиентскогоПриложения - форма элемента объекта или записи регистра.
//
//  ТекущийОбъект   - СправочникОбъект
//                  - ДокументОбъект
//                  - ПланВидовХарактеристикОбъект
//                  - ПланСчетовОбъект
//                  - ПланВидовРасчетаОбъект
//                  - БизнесПроцессОбъект
//                  - ЗадачаОбъект
//                  - ПланОбменаОбъект - проверяемый объект.
//                  - РегистрСведенийМенеджерЗаписи - менеджер проверяемой записи.
//
//  ПараметрыЗаписи - Структура - стандартный параметр, передаваемый в обработчик события.
//
Процедура ПослеЗаписиНаСервере(Форма, ТекущийОбъект, ПараметрыЗаписи) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ПослеЗаписиНаСервере(Форма, ТекущийОбъект, ПараметрыЗаписи) 
```
</details>

## ПриСозданииФормыЗначенияДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// АПК:142-выкл - №640.5 Необязательных параметров более 3 для обратной совместимости.

// Настраивает форму значения доступа, которое использует группы значений доступа
// для выбора разрешенных значений в группах доступа пользователей.
//
// Поддерживается только для случая, когда у значения доступа выбирается одна группа значений доступа,
// а не несколько.
//
// Для элемента формы ГруппаДоступа, связанного с реквизитом ГруппаДоступа, устанавливает
// список групп значений доступа в параметр выбора, которые дают доступ на изменение значения доступа.
//
// При создании нового значения доступа, если количество групп значений доступа, которые дают доступ
// на изменение значения доступа, равно нулю, будет вызвано исключение.
//
// Если в базе данных уже записана группа значений доступа, которая не дает доступ на изменение значения доступа,
// или количество групп значений доступа, которые дают доступ на изменение значения доступа, равно нулю,
// тогда свойство формы ТолькоПросмотр устанавливается в Истина.
//
// Если ограничение на уровне записей не используется или ограничение по виду доступа не используется,
// тогда элемент формы скрывается.
//
// Параметры:
//  Форма - ФормаКлиентскогоПриложения - форма значения доступа,
//            использующего группы для выбора разрешенных значений.
//
//  ДополнительныеПараметры - см. ПараметрыПриСозданииФормыЗначенияДоступа
//
//  УдалитьЭлементы       - Неопределено - устарел, следует использовать ДополнительныеПараметры.
//  УдалитьТипЗначения    - Неопределено - устарел, следует использовать ДополнительныеПараметры.
//  УдалитьСозданиеНового - Неопределено - устарел, следует использовать ДополнительныеПараметры.
//
Процедура ПриСозданииФормыЗначенияДоступа(Форма, ДополнительныеПараметры = Неопределено, Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ПриСозданииФормыЗначенияДоступа(Форма, ДополнительныеПараметры, );
```
</details>

## ПараметрыПриСозданииФормыЗначенияДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// АПК:142-вкл.

// Описание дополнительных параметров, используемых в процедуре ПриСозданииФормыЗначенияДоступа.
//
// Возвращаемое значение:
//  Структура:
//    * Реквизит       - Неопределено - означает имя реквизита формы "Объект.ГруппаДоступа".
//                     - Строка - имя реквизита формы, содержащего группу доступа.
//
//    * Элементы       - Неопределено - означает имя элемента формы "ГруппаДоступа".
//                     - Строка - имя элемента формы.
//                     - Массив - имена элементов формы.
//
//    * ТипЗначения    - Неопределено - означает: получить тип из реквизита формы "Объект.Ссылка".
//                     - Тип - тип ссылки значения доступа.
//
//    * СозданиеНового - Неопределено - означает: получить значение "НЕ ЗначениеЗаполнено(Форма.Объект.Ссылка)"
//                       для определения того, создается новое значение доступа или нет.
//                     - Булево - используется указанное значение.
//
Функция ПараметрыПриСозданииФормыЗначенияДоступа() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ПараметрыПриСозданииФормыЗначенияДоступа() 
```
</details>

## ГруппыЗначенийДоступаРазрешающиеИзменениеЗначенийДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает массив групп значений доступа, разрешающих изменять значения доступа.
//
// Поддерживается только для случая, когда выбирается одна группа значений доступа, а не несколько.
//
// Параметры:
//  ТипЗначенийДоступа - Тип - тип ссылки значений доступа.
//  ВозвращатьВсе      - Булево - если Истина, то в случае, когда нет ограничений
//                       (доступны все), будет возвращен массив всех вместо Неопределено.
//
// Возвращаемое значение:
//  Неопределено - все группы значений доступа разрешают изменять значения доступа.
//  Массив       - массив найденных групп значений доступа.
//
Функция ГруппыЗначенийДоступаРазрешающиеИзменениеЗначенийДоступа(ТипЗначенийДоступа, ВозвращатьВсе = Ложь) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ГруппыЗначенийДоступаРазрешающиеИзменениеЗначенийДоступа(ТипЗначенийДоступа, ВозвращатьВсе);
```
</details>

## НастроитьОтборыДинамическогоСписка
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Устанавливает в условие ГДЕ динамического списка постоянные отборы
// на основе разрешенных значений доступа указанных типов в рамках всех групп доступа.
// Это позволяет в отдельных случаях ускорить открытие динамического списка.
// Если количество разрешенных значений в общей сложности получилось более 100, отбор не устанавливается.
//
// Для работы процедуры у динамического списка должна быть установлена основная таблица,
// установлен произвольный запрос, а также должно поддерживаться преобразование вида:
//   СхемаЗапроса = Новый СхемаЗапроса;
//   СхемаЗапроса.УстановитьТекстЗапроса(Список.ТекстЗапроса);
//   Список.ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
// Если это условие выполнить не удается, тогда следует добавлять отборы самостоятельно
// с использованием функции РазрешенныеЗначенияДляДинамическогоСписка, как в этой процедуре.
//
// Параметры:
//  Список          - ДинамическийСписок - динамический список, в который нужно установить отборы.
//  ОписаниеОтборов - Соответствие из КлючИЗначение:
//    * Ключ     - Строка - имя поля основной таблицы динамического списка, для которого
//                          нужно установить условие <Поле> В (&РазрешенныеЗначения).
//    * Значение - Тип    - тип значений доступа, которые нужно включить в состав
//                          параметра "&РазрешенныеЗначения".
//               - Массив - массив указанных выше типов.
//
Процедура НастроитьОтборыДинамическогоСписка(Список, ОписаниеОтборов) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.НастроитьОтборыДинамическогоСписка(Список, ОписаниеОтборов) 
```
</details>

## РазрешенныеЗначенияДляДинамическогоСписка
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает массив разрешенных значений указанных типов в рамках всех групп доступа.
// Используется в процедуре НастроитьОтборыДинамическогоСписка для ускорения открытия динамических списков.
//
// Параметры:
//  Таблица      - Строка - полное имя объекта метаданных, например "Документ.РасходнаяНакладная".
//  ТипЗначений  - Тип    - тип значений доступа, разрешенные значения которых нужно вернуть.
//               - Массив - массив указанных выше типов.
//  Пользователь - Неопределено - вернуть разрешенные значения для авторизованного пользователя.
//               - СправочникСсылка.Пользователи
//               - СправочникСсылка.ВнешниеПользователи - вернуть
//                   разрешенные значения для указанного пользователя.
//  ВернутьВсе   - Булево - если установить в Истина, тогда будут возвращены все значения - даже тогда,
//                   когда их более 100.
//
// Возвращаемое значение:
//  Неопределено - либо все значения разрешены для типов, указанных в параметре ТипЗначений,
//                 либо (когда ВернутьВсе = Ложь) количество разрешенных значений превышает 100.
//  Массив       - ссылки разрешенных значений указанных типов.
//
Функция РазрешенныеЗначенияДляДинамическогоСписка(Таблица, ТипЗначений, Пользователь = Неопределено, ВернутьВсе = Ложь) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.РазрешенныеЗначенияДляДинамическогоСписка(Таблица, ТипЗначений, Пользователь, ВернутьВсе);
```
</details>

## ПраваПоИдентификаторам
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает права доступа к объектам метаданных ссылочного типа по указанным идентификаторам.
//
// Параметры:
//  Идентификаторы - Массив - значения СправочникСсылка.ИдентификаторыОбъектовМетаданных,
//                            объектов ссылочного типа, для которых нужно вернуть права.
//
// Возвращаемое значение:
//  Соответствие из КлючИЗначение:
//    * Ключ     - СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор типа;
//    * Значение - Структура:
//        ** Ключ     - Строка - имя права доступа ("Чтение", "Изменение", "Добавление");
//        ** Значение - Булево - если Истина, тогда право есть, иначе нет.
//
Функция ПраваПоИдентификаторам(Идентификаторы = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ПраваПоИдентификаторам(Идентификаторы);
```
</details>

## ВозможноЗаполнитьНаборыЗначенийДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Проверяет, предусмотрена ли для объекта метаданных процедура заполнения наборов значений доступа.
//
// Параметры:
//  Ссылка - ЛюбаяСсылка - ссылка на любой объект.
//
// Возвращаемое значение:
//  Булево - если Истина, наборы значений доступа можно заполнить.
//
Функция ВозможноЗаполнитьНаборыЗначенийДоступа(Ссылка) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ВозможноЗаполнитьНаборыЗначенийДоступа(Ссылка) 
```
</details>

## ТаблицаНаборыЗначенийДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает пустую таблицу, которая заполняется для передачи в функцию ЕстьРоль и
// в процедуры ЗаполнитьНаборыЗначенийДоступа(Таблица), определенные прикладным разработчиком.
//
// Возвращаемое значение:
//  ТаблицаЗначений:
//    * НомерНабора     - Число  - необязательно, если набор один.
//    * ВидДоступа      - Строка - необязательно, кроме специальных: ПравоЧтения, ПравоИзменения.
//    * ЗначениеДоступа - ОпределяемыйТип.ЗначениеДоступа - тип значения доступа, указанный для вида доступа
//                        в процедуре ПриЗаполненииВидовДоступа общего модуля УправлениеДоступомПереопределяемый.
//    * Чтение          - Булево - необязательно, если набор для всех прав, устанавливается для одной строки набора.
//    * Изменение       - Булево - необязательно, если набор для всех прав, устанавливается для одной строки набора.
//
Функция ТаблицаНаборыЗначенийДоступа() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ТаблицаНаборыЗначенийДоступа() 
```
</details>

## ЗаполнитьНаборыЗначенийДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Заполняет наборы значений доступа для переданного значения Объект, вызывая
// процедуру ЗаполнитьНаборыЗначенийДоступа, определенную в модуле этого объекта,
// и возвращает их в параметре Таблица.
//
// Объекты должны быть включены в подписку на событие ЗаписатьНаборыЗначенийДоступа
// или ЗаписатьЗависимыеНаборыЗначенийДоступа.
//
// В модулях объектов должна быть размещена процедура обработчика, в которую передаются параметры:
//  Таблица - ТаблицаЗначений - возвращаемая функцией ТаблицаНаборыЗначенийДоступа.
//
// Далее пример процедуры обработчика для копирования в модули объектов.
//
//// См. УправлениеДоступом.ЗаполнитьНаборыЗначенийДоступа.
//Процедура ЗаполнитьНаборыЗначенийДоступа(Таблица) Экспорт
//
//	// Логика ограничения:
//	// Чтения:    Организация.
//	// Изменения: Организация И Ответственный.
//
//	// Чтение: набор № 1.
//	Строка = Таблица.Добавить();
//	Строка.НомерНабора     = 1;
//	Строка.Чтение          = Истина;
//	Строка.ЗначениеДоступа = Организация;
//
//	// Изменение: набор № 2.
//	Строка = Таблица.Добавить();
//	Строка.НомерНабора     = 2;
//	Строка.Изменение       = Истина;
//	Строка.ЗначениеДоступа = Организация;
//
//	Строка = Таблица.Добавить();
//	Строка.НомерНабора     = 2;
//	Строка.ЗначениеДоступа = Ответственный;
//
//КонецПроцедуры
//
// Параметры:
//  Объект  - ЛюбаяСсылка
//          - ОпределяемыйТип.ВладелецНаборовЗначенийДоступаОбъект - ссылка или объект,
//            (элемент справочника, документ, бизнес-процесс, задача, план видов характеристик и т.п.),
//            для которого требуется заполнить наборы значений доступа.
//
//  Таблица - см. ТаблицаНаборыЗначенийДоступа
//          - Неопределено - возвращает в этом параметре подготовленные наборы значений доступа.
//            Если передано Неопределено, то будет создана и заполнена новая таблица наборов значений доступа.
//
//  СсылкаНаПодчиненныйОбъект - ЛюбаяСсылка - используется, когда нужно заполнить наборы значений
//            доступа объекта-владельца для указанного подчиненного объекта.
//            Подробнее смотри УправлениеДоступомПереопределяемый.ПриЗаполненииЗависимостейПравДоступа.
//
Процедура ЗаполнитьНаборыЗначенийДоступа(Знач Объект, Таблица, Знач СсылкаНаПодчиненныйОбъект = Неопределено) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ЗаполнитьНаборыЗначенийДоступа(Объект, Таблица, СсылкаНаПодчиненныйОбъект);
```
</details>

## ДобавитьНаборыЗначенийДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Позволяет добавить к одной таблице наборов значений доступа другую таблицу
// наборов значений доступа либо логическим сложением, либо логическим умножением.
//
// Результат помещается в параметр Приемник.
//
// Параметры:
//  Приемник - ТаблицаЗначений - с колонками как у таблицы, возвращаемой функцией ТаблицаНаборыЗначенийДоступа.
//  Источник - ТаблицаЗначений - с колонками как у таблицы, возвращаемой функцией ТаблицаНаборыЗначенийДоступа.
//
//  Умножение - Булево - определяет способ логического объединения наборов приемника и источника.
//  Упростить - Булево - определяет, требуется ли упрощение наборов после добавления.
//
Процедура ДобавитьНаборыЗначенийДоступа(Приемник, Знач Источник, Знач Умножение = Ложь, Знач Упростить = Ложь) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ДобавитьНаборыЗначенийДоступа(Приемник, Источник, Умножение, Упростить);
```
</details>

## ОбновитьНаборыЗначенийДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Выполняет обновление наборов значений доступа объекта, если они изменились.
// Наборы обновляются в табличной части (если используется) и
// в регистре сведений НаборыЗначенийДоступа.
//
// Параметры:
//  СсылкаИлиОбъект - ЛюбаяСсылка
//                  - ОпределяемыйТип.ВладелецНаборовЗначенийДоступаОбъект - ссылка или объект,
//                    для которого заполняются наборы значений доступа.
//
//  ОбновлениеИБ    - Булево - если Истина, то необходимо выполнять запись данных,
//                             не выполняя лишних, избыточных действий с данными.
//                             См. ОбновлениеИнформационнойБазы.ЗаписатьДанные.
//
Процедура ОбновитьНаборыЗначенийДоступа(СсылкаИлиОбъект, ОбновлениеИБ = Ложь) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ОбновитьНаборыЗначенийДоступа(СсылкаИлиОбъект, ОбновлениеИБ);
```
</details>

## НовоеОписаниеПрофиляГруппДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает структуру для удобства описания поставляемых профилей.
//
// Возвращаемое значение:
//  Структура:
//   * Имя           - Строка - может использоваться в программном интерфейсе,
//                        например, в процедуре ВключитьПрофильПользователю.
//   * Родитель      - Строка - имя папки профилей, в которую входит профиль.
//   * Идентификатор - Строка - строка уникального идентификатора поставляемого
//                       профиля, которая используется для поиска в базе данных.
//                       Чтобы получить идентификатор, нужно создать профиль в режиме 1С:Предприятие и
//                       получить уникальный идентификатор ссылки. Не следует указывать идентификаторы,
//                       полученные произвольным способом, т.к. это может нарушить уникальность ссылок.
//   * Наименование  - Строка - наименование поставляемого профиля.
//   * Описание      - Строка - описание поставляемого профиля.
//   * Роли          - Массив из Строка - имена ролей поставляемого профиля.
//   * Назначение    - Массив из Тип - типы ссылок пользователя и объектов авторизации внешних
//                       пользователей. Если пустой, значит, назначение для пользователей.
//                       Должны быть в пределах состава определяемого типа Пользователь.
//   * ВидыДоступа   - СписокЗначений:
//                     ** Значение      - Строка - имя вида доступа, указанного в переопределяемом
//                          модуле УправлениеДоступомПереопределяемый в процедуре ПриЗаполненииВидовДоступа.
//                     ** Представление - Строка - допустимы строки "ВначалеВсеЗапрещены" (или пустая строка),
//                          "ВначалеВсеРазрешены", "Предустановленный".
//
//   * ЗначенияДоступа - СписокЗначений:
//                     ** Значение      - Строка - имя вида доступа, указанного в параметре ВидыДоступа.
//                     ** Представление - Строка - имя предопределенного элемента, например
//                          "Справочник.ГруппыПользователей.ВсеПользователи".
//
//   * ЭтоПапка - Булево - всегда Ложь. Нельзя изменять.
//
// Пример:
//
//	// Профиль "Пользователь".
//	ОписаниеПрофиля = УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа();
//	ОписаниеПрофиля.Имя           = "Пользователь";
//	ОписаниеПрофиля.Идентификатор = "09e56dbf-90a0-11de-862c-001d600d9ad2";
//	ОписаниеПрофиля.Наименование  = НСтр("ru = 'Пользователь'", ОбщегоНазначения.КодОсновногоЯзыка());
//	// Переопределение назначения.
//	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОписаниеПрофиля.Назначение,
//		Метаданные.ОпределяемыеТипы.ВнешнийПользователь.Тип.Типы());
//	ОписаниеПрофиля.Описание =
//		НСтр("ru = 'Общие разрешенные действия для большинства пользователей.
//		           |Как правило, это права на просмотр данных информационной системы.'");
//	// Использование 1С:Предприятия.
//	ОписаниеПрофиля.Роли.Добавить("ЗапускТонкогоКлиента");
//	ОписаниеПрофиля.Роли.Добавить("ВыводНаПринтерФайлБуферОбмена");
//	ОписаниеПрофиля.Роли.Добавить("СохранениеДанныхПользователя");
//	// ...
//	// Использование программы.
//	ОписаниеПрофиля.Роли.Добавить("БазовыеПраваБСП");
//	ОписаниеПрофиля.Роли.Добавить("ПросмотрОписанияИзмененийПрограммы");
//	ОписаниеПрофиля.Роли.Добавить("ИзменениеТекущегоПользователя");
//	// ...
//	// Использование НСИ.
//	ОписаниеПрофиля.Роли.Добавить("ЧтениеБазовойНСИ");
//	ОписаниеПрофиля.Роли.Добавить("ЧтениеОбщейБазовойНСИ");
//	// ...
//	// Типовые возможности.
//	ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеЛичныхВариантовОтчетов");
//	ОписаниеПрофиля.Роли.Добавить("ПросмотрСвязанныеДокументы");
//	// ...
//	// Основные возможности профиля.
//	ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеЗаметок");
//	ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеНапоминаний");
//	ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеЗаданий");
//	ОписаниеПрофиля.Роли.Добавить("ИзменениеВыполнениеЗадач");
//	// ...
//	// Виды ограничения доступа профиля.
//	ОписаниеПрофиля.ВидыДоступа.Добавить("Организации");
//	ОписаниеПрофиля.ВидыДоступа.Добавить("Пользователи", "Предустановленный");
//	ОписаниеПрофиля.ВидыДоступа.Добавить("ХозяйственныеОперации", "Предустановленный");
//	ОписаниеПрофиля.ЗначенияДоступа.Добавить("ХозяйственныеОперации",
//		"Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику");
//	// ...
//	ОписанияПрофилей.Добавить(ОписаниеПрофиля);
//
Функция НовоеОписаниеПрофиляГруппДоступа() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа() 
```
</details>

## НовоеОписаниеПапкиПрофилейГруппДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает структуру для удобства описания поставляемых папок профилей (групп элементов).
//
// Возвращаемое значение:
//  Структура:
//   * Имя           - Строка - используется в поле Родитель для профиля и папки профилей.
//   * Родитель      - Строка - имя другой папки профилей, в которую входит эта папка.
//   * Идентификатор - Строка - строка уникального идентификатора поставляемой папки
//                       профиля, которая используется для поиска в базе данных.
//                       Чтобы получить идентификатор, нужно создать папку профилей в режиме 1С:Предприятие и
//                       получить уникальный идентификатор ссылки. Не следует указывать идентификаторы,
//                       полученные произвольным способом, т.к. это может нарушить уникальность ссылок.
//   * Наименование  - Строка - наименование поставляемой папки профилей.
//   * ЭтоПапка      - Булево - всегда Истина. Нельзя изменять.
//
// Пример:
//	// Папка профилей "Дополнительные профили".
//	ОписаниеПапки = УправлениеДоступом.НовоеОписаниеПапкиПрофилейГруппДоступа();
//	ОписаниеПапки.Имя           = "ДополнительныеПрофили";
//	ОписаниеПапки.Идентификатор = "";
//	ОписаниеПапки.Наименование  = НСтр("ru = 'Дополнительные профили'", ОбщегоНазначения.КодОсновногоЯзыка());
//	// ...
//	ОписанияПрофилей.Добавить(ОписаниеПрофиля);
//
Функция НовоеОписаниеПапкиПрофилейГруппДоступа() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.НовоеОписаниеПапкиПрофилейГруппДоступа() 
```
</details>

## ДобавитьДополнительныеТипыВидаДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Добавляет дополнительные типы в процедуре ПриЗаполненииВидовДоступа
// общего модуля УправлениеДоступомПереопределяемый.
//
// Параметры:
//  ВидДоступа             - СтрокаТаблицыЗначений - добавленная в параметр ВидыДоступа.
//  ТипЗначений            - Тип - дополнительный тип значений доступа.
//  ТипГруппЗначений       - Тип - дополнительный тип групп значений доступа, может совпадать
//                           с типом групп значений, указанным ранее для этого же вида доступа.
//  НесколькоГруппЗначений - Булево - Истина, если у дополнительного типа значений доступа
//                           можно указать несколько групп значений (есть табличная часть ГруппыДоступа).
//
Процедура ДобавитьДополнительныеТипыВидаДоступа(ВидДоступа, ТипЗначений, Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ДобавитьДополнительныеТипыВидаДоступа(ВидДоступа, ТипЗначений, );
```
</details>

## ЗаменитьРолиВПрофилях
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Заменяет роли в профилях, кроме поставляемых профилей, которые обновляются автоматически.
// Предназначена для вызова из оперативного обработчика обновления.
//
// Параметры:
//  ЗаменяемыеРоли - Соответствие из КлючИЗначение:
//    * Ключ     - Строка - имя заменяемой роли, например "ЧтениеБазовойНСИ". Если роль была удалена,
//                          то к имени нужно добавить приставку "? ", например "? ЧтениеБазовойНСИ".
//
//    * Значение - Массив - имена ролей для замены указанной (пустой массив, чтобы удалить указанную роль,
//                          можно указывать заменяемую роль, например, при разделении на несколько).
//
Процедура ЗаменитьРолиВПрофилях(ЗаменяемыеРоли) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ЗаменитьРолиВПрофилях(ЗаменяемыеРоли) 
```
</details>

## ПоставляемыйПрофильПоИдентификатору
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает ссылку на поставляемый профиль или папку профилей по идентификатору.
//
// Параметры:
//  Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля или папки профилей,
//                  как указано в процедуре ПриЗаполненииПоставляемыхПрофилейГруппДоступа
//                  общего модуля УправлениеДоступомПереопределяемый.
//
// Возвращаемое значение:
//  СправочникСсылка.ПрофилиГруппДоступа - если поставляемый профиль или папка профилей найдена в справочнике.
//  Неопределено - если поставляемый профиль или папка профилей не существует в справочнике.
//
Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор) Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ПоставляемыйПрофильПоИдентификатору(Идентификатор) 
```
</details>

## ПрофильАдминистратор
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает ссылку на стандартный поставляемый профиль Администратор.
//
// Возвращаемое значение:
//  СправочникСсылка.ПрофилиГруппДоступа
//
Функция ПрофильАдминистратор() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ПрофильАдминистратор() 
```
</details>

## ГруппаДоступаАдминистраторы
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает ссылку на стандартную поставляемую группу доступа Администраторы.
//
// Возвращаемое значение:
//  СправочникСсылка.ГруппыДоступа
//
Функция ГруппаДоступаАдминистраторы() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ГруппаДоступаАдминистраторы() 
```
</details>

## ТаблицаЗаменыПравВНастройкахПравОбъектов
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает пустую таблицу для заполнения и
// передачи в процедуру ЗаменитьПраваВНастройкахПравОбъектов.
//
// Возвращаемое значение:
//  ТаблицаЗначений:
//    * ТипВладельцев - ОпределяемыйТип.ВладелецНастроекПрав - пустая ссылка типа владельца прав,
//                      например пустая ссылка справочника ПапкиФайлов.
//    * СтароеИмя     - Строка - старое имя права.
//    * НовоеИмя      - Строка - новое имя права.
//
Функция ТаблицаЗаменыПравВНастройкахПравОбъектов() Экспорт
```

Пример вызова
```bsl
Результат = УправлениеДоступом.ТаблицаЗаменыПравВНастройкахПравОбъектов() 
```
</details>

## ЗаменитьПраваВНастройкахПравОбъектов
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Заменяет права, используемые в настройках прав объектов.
// После выполнения замены будет выполнено обновление вспомогательных данных
// регистра сведений НастройкиПравОбъектов, поэтому следует вызвать
// процедуру однократно, чтобы не снижать производительность.
//
// Параметры:
//  ТаблицаПереименований - ТаблицаЗначений:
//    * ТипВладельцев - ОпределяемыйТип.ВладелецНастроекПрав - пустая ссылка типа владельца прав,
//                      например пустая ссылка справочника ПапкиФайлов.
//    * СтароеИмя     - Строка - старое имя права, относящееся к указанному типу владельцев.
//    * НовоеИмя      - Строка - новое  имя права, относящееся к указанному типу владельцев.
//                      Если указана пустая строка, настройка старого права будет удалена.
//                      Если старому имени поставлены в соответствие два новых имени,
//                      тогда одна старая настройка будет размножена в две новых.
//
Процедура ЗаменитьПраваВНастройкахПравОбъектов(ТаблицаПереименований) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ЗаменитьПраваВНастройкахПравОбъектов(ТаблицаПереименований) 
```
</details>

## ОбновитьРолиПользователей
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Обновляет список ролей пользователей информационной базы по их текущим принадлежностям
// к группам доступа. Пользователи ИБ с ролью "ПолныеПрава" пропускаются.
//
// Параметры:
//  МассивПользователей - Массив
//                      - Неопределено
//                      - Тип - массив из элементов
//     СправочникСсылка.Пользователи или СправочникСсылка.ВнешниеПользователи.
//     Если Неопределено, то обновить роли всех пользователей.
//     Если Тип = Справочник.ВнешниеПользователи, то будут обновлены роли всех внешних пользователей,
//     иначе будут обновлены роли всех пользователей.
//
//  ПарольПользователяСервиса - Строка - пароль для авторизации в менеджере сервиса.
//
Процедура ОбновитьРолиПользователей(Знач МассивПользователей = Неопределено, Знач ПарольПользователяСервиса = Неопределено) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ОбновитьРолиПользователей(МассивПользователей, ПарольПользователяСервиса);
```
</details>

## ОбновитьРазрешенныеЗначенияПриИзмененииИспользованияВидовДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Обновляет содержание регистров ЗначенияГруппДоступа и ЗначенияГруппДоступаПоУмолчанию,
// которые заполняются на основании настроек в группах доступа и использования видов доступа.
//
Процедура ОбновитьРазрешенныеЗначенияПриИзмененииИспользованияВидовДоступа() Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ОбновитьРазрешенныеЗначенияПриИзмененииИспользованияВидовДоступа() 
```
</details>

## ЗаполнениеДанныхДляОграниченияДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Выполняет последовательное заполнение и частичное обновление данных, необходимых для работы
// подсистемы УправлениеДоступом в режиме ограничения доступа на уровне записей.
//
// При включенном режиме ограничения доступа на уровне записей заполняет наборы
// значений доступа. Заполнение выполняется частями при каждом запуске, пока все
// наборы значений доступа не будут заполнены.
//
// При отключении режима ограничения доступа на уровне записей наборы значений доступа
// (заполненные ранее) удаляются при перезаписи объектов, а не все сразу.
//
// Независимо от режима ограничения доступа на уровне записей обновляет вторичные данные -
// группы значений доступа и дополнительные поля в существующих наборах значений доступа.
// После завершения всех обновлений и заполнений отключает использование регламентного задания.
//
// Сведения о состоянии работы записываются в журнал регистрации.
// Возможно вызывать программно, например при обновлении информационной базы.
//
// Параметры:
//  КоличествоДанных - Число - возвращаемое значение. Количество объектов данных,
//                             для которых было выполнено заполнение.
//
Процедура ЗаполнениеДанныхДляОграниченияДоступа(КоличествоДанных = 0) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ЗаполнениеДанныхДляОграниченияДоступа(КоличествоДанных);
```
</details>

## ОтключитьОбновлениеКлючейДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Для ускорения пакетной обработки данных в текущем сеансе (полноправный пользователь)
// отключает и включает расчет прав при записи объекта или набора записей
// (обновление ключей доступа к объектам и к записям регистров, а также прав
//  групп доступа, пользователей и внешних пользователей на новые ключи доступа).
//
// Рекомендуется:
// - при восстановлении из резервной копии XML;
// - массовой загрузке данных из файла;
// - массовой загрузке данных при обмене данными;
// - групповом изменении объектов.
//
// Параметры:
//  Отключить - Булево - Истина - отключает обновление ключей доступа и включает режим
//                         сбора состава таблиц (списков), для которых будет запланировано
//                         обновление ключей доступа при продолжении обновления ключей доступа.
//                       Ложь - планирует обновление ключей доступа таблиц, собранных в режиме
//                         отключения, и включает стандартный режим обновления ключей доступа.
//
//  ПланироватьОбновление - Булево - планирование обновления при отключении и продолжении.
//                            Когда Отключить = Истина, тогда определяет необходимость сбора
//                              состава таблиц, для которых будет запланировано обновление.
//                              Ложь - требуется только в режиме загрузки из резервной копии XML, когда
//                              загружаются все данные информационной базы, включая все служебные данные.
//                            Когда Отключить = Ложь, тогда определяет необходимость планирования
//                              обновления для собранных таблиц.
//                              Ложь требуется в обработке исключения после отмены транзакции,
//                              если есть внешняя транзакция, так как любая запись
//                              в базу данных в таком состоянии приведет к ошибке, кроме того,
//                              планировать обновление после отмены транзакции не требуется.
// Пример:
//
//  Вариант 1. Запись набора объектов вне транзакции (ТранзакцияАктивна() = Ложь).
//
//	УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Истина);
//	Попытка
//		// Запись набора объектов.
//		// ...
//		УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь);
//	Исключение
//		УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь);
//		//...
//		ВызватьИсключение;
//	КонецПопытки;
//
//  Вариант 2. Запись набора объектов в транзакции (ТранзакцияАктивна() = Истина).
//
//	УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Истина);
//	НачатьТранзакцию();
//	Попытка
//		БлокировкаДанных.Заблокировать();
//		// ...
//		// Запись набора объектов.
//		// ...
//		УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь);
//		ЗафиксироватьТранзакцию();
//	Исключение
//		ОтменитьТранзакцию();
//		УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь);
//		//...
//		ВызватьИсключение;
//	КонецПопытки;
//
Процедура ОтключитьОбновлениеКлючейДоступа(Отключить, ПланироватьОбновление = Истина) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Отключить, ПланироватьОбновление);
```
</details>

## ДобавитьОбработчикОбновленияДляВключенияУниверсальногоОграничения
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Добавляет отложенный обработчик обновления, который включает универсальное ограничение доступа
// (включает константу ОграничиватьДоступНаУровнеЗаписейУниверсально).
// Следует использовать только в конечных типовых решениях, а не в поставках библиотек.
//
// Параметры:
//  Версия      - Строка - версия для таблицы ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления.
//                  Можно указать пустую строку, если параметр УстарелТолькоНачальноеЗаполнение указан Истина.
//  Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//  УстарелТолькоНачальноеЗаполнение - Булево - для обратной совместимости, если указан Истина,
//    тогда не будет добавлен отложенный обработчик обновления для версии в параметре Версия.
//  УстарелБезУчетаРИБ - Булево - не учитывается (обработчики добавляются без учета наличия РИБ).
//
// Пример:
//	Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
//		УправлениеДоступом.ДобавитьОбработчикОбновленияДляВключенияУниверсальногоОграничения("3.0.3.7", Обработчики);
//	КонецПроцедуры
//
Процедура ДобавитьОбработчикОбновленияДляВключенияУниверсальногоОграничения(Версия, Обработчики, Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ДобавитьОбработчикОбновленияДляВключенияУниверсальногоОграничения(Версия, Обработчики, );
```
</details>

## ЗапланироватьОбновлениеДоступа
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Планирует обновление доступа для указанной таблицы.
// Будут проверены и обновлены ключи доступа всех объектов указанной таблицы, если не актуальны.
// Будут пересчитаны и обновлены права на все ключи доступа объектов указанной таблицы, если не актуальны.
//
// Требуется при исправлении специфических прикладных ошибок, из-за которых может потребоваться актуализация
// ключей доступа или прав на ключи доступа, но система не выявила эту необходимость автоматически.
//
// Параметры:
//  Таблица - Строка - полное имя объекта метаданных.
//          - Массив из Строка - полные имена объектов метаданных.
//
Процедура ЗапланироватьОбновлениеДоступа(Таблица) Экспорт
```

Пример вызова
```bsl
УправлениеДоступом.ЗапланироватьОбновлениеДоступа(Таблица) 
```
</details>

---

© 2024, **ООО 1С-Софт**  
Все права защищены. Эта программа и сопроводительные материалы предоставляются  
в соответствии с условиями лицензии [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/legalcode).

---
