1.
1С:Предприятие 8 . 2 ( 8 . 2 . 10 . 77 )
Управление производственным предприятием, редакция 1 . 3 ( 1 . 3 . 2 . 1 )
Есть такой документ "Заявка на расходование средств", клиент просит добавить ограничение на поле "Счет/Касса".
Решил реализовать через шаблоны ограничений роли Пользователь.
С Кассой все получилось без проблем.
На Счете застрял.
Шаблон ограничения по Счету в стандартной поставке
"Прочие поля"
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации #Тогда
ТекущаяТаблица
ИЗ
#ТекущаяТаблица КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
СоставГруппы.Ссылка КАК ГруппаПользователей
ИЗ
Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
ГДЕ
СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И
(НЕ 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
ПО ТекущаяТаблица.Владелец ССЫЛКА Справочник.Контрагенты
И Контрагенты.Ссылка = ТекущаяТаблица.Владелец
#КонецЕсли
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
ПО
НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
#КонецЕсли
#Если &ИспользоватьОграничениеПоОрганизации #Тогда
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
ТОГДА ТекущаяТаблица.Владелец
#КонецЕсли
КОНЕЦ
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
И
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
ТОГДА НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
ИЛИ НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДопИнформация)
ИНАЧЕ
НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
КОНЕЦ
#Иначе
НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
#КонецЕсли
И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
ГДЕ
НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (
ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
, ВЫБОР КОГДА ТекущаяТаблица.Владелец ССЫЛКА Справочник.Контрагенты
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
КОНЕЦ
#КонецЕсли
#Если &ИспользоватьОграничениеПоОрганизации #Тогда
, ВЫБОР КОГДА ТекущаяТаблица.Владелец ССЫЛКА Справочник.Организации
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
КОНЕЦ
#КонецЕсли
)
И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли
Как его переписать так, что бы добавить ограничение еще и по счетам?
Ограничения накладываю в Сервис - Настройка Доступа пользователей - Группы пользователей
Добавил там закладку и для каждой группы указываю пользователей и БанковскиеСчета
Попробовал так - не получилось. Что не так?
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоБанкСчет #Тогда
ТекущаяТаблица
ИЗ
#ТекущаяТаблица КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
СоставГруппы.Ссылка КАК ГруппаПользователей
ИЗ
Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
ГДЕ
СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И
(НЕ 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
ПО ТекущаяТаблица.Владелец ССЫЛКА Справочник.Контрагенты
И Контрагенты.Ссылка = ТекущаяТаблица.Владелец
#КонецЕсли
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
ПО
НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
#КонецЕсли
#Если &ИспользоватьОграничениеПоОрганизации #Тогда
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
ТОГДА ТекущаяТаблица.Владелец
#КонецЕсли
#Если &ИспользоватьОграничениеПоБанкСчет #Тогда
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.БанкСчет)
ТОГДА ТекущаяТаблица.Ссылка
//ТОГДА ТекущаяТаблица.#Параметр( 1 )
#КонецЕсли
КОНЕЦ
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
И
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
ТОГДА НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
ИЛИ НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДопИнформация)
ИНАЧЕ
НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
КОНЕЦ
#Иначе
НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
#КонецЕсли
И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
ГДЕ
НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (
ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)
#Если &ИспользоватьОграничениеПоБанкСчет #Тогда
//, ВЫБОР КОГДА ТекущаяТаблица.Ссылка ССЫЛКА Справочник.БанковскиеСчета
// ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.БанкСчет)
// КОНЕЦ
ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.БанкСчет)
#КонецЕсли
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
, ВЫБОР КОГДА ТекущаяТаблица.Владелец ССЫЛКА Справочник.Контрагенты
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
КОНЕЦ
#КонецЕсли
#Если &ИспользоватьОграничениеПоОрганизации #Тогда
, ВЫБОР КОГДА ТекущаяТаблица.Владелец ССЫЛКА Справочник.Организации
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
КОНЕЦ
#КонецЕсли
)
И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли