584 документа
← К списку

В 1C:EDT

страница

В 1C:EDT

Для того чтобы документ невозможно было просмотреть и в этой ситуации, вам нужно будет изменить существующее условие ограничения доступа.

Новое условие будет более сложным, поэтому вы будете использовать шаблоны в ограничениях доступа.

Итак, перейдите на закладку Шаблоны ограничений в редакторе роли Мастер. Добавьте новый шаблон ограничений с именем ЕстьПремия (рис. 23.24).

Рис. 23.2****4. Добавление шаблона ограничений доступа к данным для роли «Мастер»

Текст шаблона будет выглядеть следующим образом (листинг 23.2).

Листинг 23.2. Ограничение доступа к данным

ВЫБРАТЬ

1

ИЗ

Документ.НачисленияСотрудникам.Начисления

ГДЕ

Документ.НачисленияСотрудникам.Начисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисления.Премия)

И Документ.НачисленияСотрудникам.Начисления.Ссылка = #Параметр(1).Ссылка

По сути это запрос к табличной части документа НачисленияСотрудникам, который либо не вернет вам ничего, либо вернет одну запись с одним полем, в котором будет значение 1.

Такую запись он вернет вам в том случае, если в табличной части документа есть вид расчета Премия.

Второе условие в этом запросе нужно вам для того, чтобы указать, табличная часть какого именно документа вас интересует. В этом условии используется возможность указания параметров в шаблоне.

Листинг 23.3. Ограничение доступа к данным

И Документ.НачисленияСотрудникам.Начисления.Ссылка = #Параметр(1).Ссылка

Вместо #Параметр(1) будет подставлена та строка, которую вы укажете при вызове этого шаблона в условии ограничения доступа.

Теперь нажмите Готово и вернитесь на закладку Права в редакторе роли Мастер.

В имеющемся ограничении прав доступа для других полей (в первой строке списка ограничений) замените старый текст новым (листинг 23.4) – рис. 23.25.

Листинг 23.4. Ограничение доступа к данным

ДокНачисления ГДЕ НЕ 1 В (#ЕстьПремия("ДокНачисления"))

Рис. 23.2****5. Установка ограничений доступа к данным для роли «Мастер»

Здесь с помощью конструкции #ЕстьПремия("ДокНачисления") вы обращаетесь к созданному вами шаблону. Текст шаблона просто механически будет подставлен в это место, причем строка ДокНачисления заменит собой первый параметр шаблона (#Параметр(1)).

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

Поэтому это условие (см. листинг 23.4) разрешит вам прочитать ДокНачисления тогда, когда запрос из шаблона не возвращает 1:

ГДЕ НЕ 1 В (#ЕстьПремия("ДокНачисления"))

То есть тогда, когда в табличной части нет начисления Премия.

Можно было бы записать это условие ограничения и без использования шаблонов.

Но, во-первых, такая запись была бы менее читаемой (листинг 23.5), а во-вторых, использование шаблонов позволяет выделить и не дублировать части условий ограничений, которые могут использоваться в разных условиях.

Листинг 23.5. Ограничение доступа к данным

ДокНачисления ГДЕ НЕ 1 В (

ВЫБРАТЬ

1

ИЗ

Документ.НачисленияСотрудникам.Начисления

ГДЕ

Документ.НачисленияСотрудникам.Начисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисления.Премия)

И Документ.НачисленияСотрудникам.Начисления.Ссылка = ДокНачисления.Ссылка)