Имя: Пароль:
1C
 
РЛС у РН
0 ArturDoo
 
03.04.23
22:25
Доброго дня. Хочу сделать РЛС по подразделениям на РН, но если их заполнить, пользователь не видит записи в РС. Может я где-то ошибся в параметрах, или еще в чем-то. Подскажите, пожалуйста.

Текст ограничения:

Подробности
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.ДанныеТабельногоУчетаРабочегоВремениВнешнихСотрудников", "Подразделения", "Подразделение", "", "", "")
#Иначе
#ПоЗначениям( "РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениВнешнихСотрудников", "", "",
"Подразделения", "Подразделение", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")
#КонецЕсли

Текст шаблона:

// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
// Шаблон используется для ограничения групп записей регистров.
//
// Параметры:
//  Регистр - имя предопределенного элемента справочника Идентификаторы объектов метаданных или справочника
//            Идентификаторы объектов расширений в формате: имя справочника с точкой и полное имя таблицы
//            без точки, например, ИдентификаторыОбъектовМетаданных.РегистрНакопленияОстаткиНаСкладах;
//          - имя отдельного регистра ключей в формате КлючиДоступаКРегистру<ОстатокИмени>,
//            например, КлючиДоступаКРегиструОстаткиНаСкладах.
//  Поле1   - имя первого поля (измерения, ресурса, реквизита), которое будет соединяться с полем Поле1
//            регистра сведений КлючиДоступаКРегистр*
//  Поле2   - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.
//  ...
//  Поле5   - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.

#Если &СпискиСОтключеннымОграничениемЧтения = "Неопределено" #Тогда
  // Информационная база заблокирована для обновления.
  ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ДляРегистра9,") #Тогда
  Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 9 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли &СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
  // У пользователя отключены все виды доступа или
  // ограничение на уровне записей не используется.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы + ";") #Тогда
  // У пользователя отключено ограничение для текущей таблицы.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ТребуетсяПерезапуститьСеанс,") #Тогда
  Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли #ИмяТекущегоПраваДоступа <> "Чтение" #Тогда
  // Проверка прав Добавление, Изменение, Удаление выполняется ПередЗаписью / ПриЗаписи.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";0") #Тогда
  ГДЕ ЛОЖЬ

#ИначеЕсли СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";1") #Тогда
  Ошибка: Внешние пользователи отключены.

#ИначеЕсли Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;")
         И Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда

  Ошибка: Требуется актуализировать ограничение доступа по причине: Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляРегистра со значениями параметров "#Регистр", "#Поле1", "#Поле2", "#Поле3", "#Поле4", "#Поле5". Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#Иначе

ТекущаяТаблица ГДЕ ИСТИНА В
(
  ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
#Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
  ИЗ РегистрСведений.КлючиДоступаКРегистрам КАК КлючиДоступаКРегистрам
#Иначе
  ИЗ РегистрСведений.#Регистр КАК КлючиДоступаКРегистрам
#КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаНаборовГруппДоступа
      ПО
          КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппДоступа.НаборГруппДоступа = &РазрешенныйНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
      
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаРазрешенногоНабораГруппДоступа
      ПО
          КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаРазрешенногоНабораГруппДоступа.НаборГруппДоступа = &РазрешенныйПустойНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаПользователей.Пользователь = &РазрешенныйПользователь
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаПользователей.ВнешнийПользователь = &РазрешенныйПользователь
    #КонецЕсли
  #КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
      
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппПользователей.Пользователь = &РазрешенныйНаборГруппПользователей
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппПользователей.ВнешнийПользователь = &РазрешенныйНаборГруппПользователей
    #КонецЕсли
  #КонецЕсли
  ГДЕ
  #Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
      КлючиДоступаКРегистрам.Регистр = Значение(Справочник.#Регистр)
  #Иначе
      ИСТИНА
  #КонецЕсли
    И
  (
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Версия1=0") #Тогда
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли

#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2") #Тогда

  ИЛИ
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Версия2=0") #Тогда
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли

#КонецЕсли
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3") #Тогда

  ИЛИ
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Версия3=0") #Тогда
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли

#КонецЕсли
  )
    И (
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
          НЕ КлючиДоступаНаборовГруппДоступа.КлючДоступа ЕСТЬ NULL
  #Иначе
          ЛОЖЬ
  #КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
      ИЛИ НЕ КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      ИЛИ НЕ КлючиДоступаПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
      ИЛИ НЕ КлючиДоступаНаборовГруппПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
      )
)

#Если Не СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Пропустить;")
   И (    СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";УточнитьДляВсех;")
      Или СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Уточнить;") ) #Тогда
  
  #Если Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
  И ИСТИНА В (ИСТИНА
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";31;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";30;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";29;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";28;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";27;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";26;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";25;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";24;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";23;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";22;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";21;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";20;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";19;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";18;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";17;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";16;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";15;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";14;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";13;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";12;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";11;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";10;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";09;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";08;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";07;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";06;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";05;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";04;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";03;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";02;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";01;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";00;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    )
  #Иначе
  И ИСТИНА В (ИСТИНА
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";31^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";30^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";29^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";28^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";27^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";26^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";25^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";24^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";23^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";22^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";21^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";20^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";19^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";18^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";17^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";16^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";15^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";14^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";13^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";12^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";11^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";10^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";09^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";08^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";07^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";06^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";05^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";04^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";03^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";02^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";01^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    #Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";00^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
    )
  #КонецЕсли
#КонецЕсли

#КонецЕсли
1 ArturDoo
 
03.04.23
10:59
База на - БСП 3_1_5_331
2 Asmody
 
03.04.23
11:30
Я раньше не знал, как выглядит страшный пиздец, но я увидел (0) и теперь я знаю
3 magicSan
 
03.04.23
11:41
(0) ТекущаяТаблица
ИЗ
#ТекущаяТаблица КАК ТекущаяТаблица
где ТекущаяТаблица.Подразделение = блабла
4 ArturDoo
 
03.04.23
11:51
(3) Те ты предлагаешь без шаблонов, просто лупануть запросом?
5 lodger
 
03.04.23
13:00
(2) так это типовой рлс в бухне )
6 timurhv
 
03.04.23
13:51
(0) Если используется производительный режим, то необходимо обновить доступы на уровне записей. Перед этим проверить:
- у РН в модуле менеджера должна быть процедура "ПриЗаполненииОграниченияДоступа"
- поля ограничений доступа РН включены в процедуру "ПриЗаполненииВидовОграниченийПравОбъектовМетаданных"
7 timurhv
 
03.04.23
13:55
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

    Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    |    ЗначениеРазрешено(Организация)
    |    И ЗначениеРазрешено(Подразделение)";

КонецПроцедуры

// См. УправлениеДоступомПереопределяемый.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных.
Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт

    Описание = Описание + "
    |РегистрНакопления.ВзаиморасчетыСКонтрагентамиАкционерами.Чтение.Подразделение
    |РегистрНакопления.ВзаиморасчетыСКонтрагентамиАкционерами.Чтение.Организации";
    
КонецПроцедуры
8 magicSan
 
03.04.23
14:09
(4) это шаблон рлс в конфигураторе
9 ArturDoo
 
03.04.23
19:21
(7) Сделал так:
1) добавил в ОМ УправлениеДоступомПереопределяемый
в процедуру ПриЗаполненииВидовОграниченийПравОбъектовМетаданных (Описание)
|РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениВнешнихСотрудников.Чтение.Подразделения
|РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениВнешнихСотрудников.Изменение.Подразделения

И в процедуру ПриЗаполненииОграниченияДоступа(Список, Ограничение) Экспорт

    Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    |    ЗначениеРазрешено(Подразделение)";

2) в модуль менеджер РН добавил
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

    Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    |     ЗначениеРазрешено(Подразделение)";

    
Вариант работы РЛС - стандартный

В роли, в ограничение доступа такой текст
#ПоЗначениям("РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениВнешнихСотрудников", "Чтение", "", "Подразделения", "Подразделение",
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","")

Но у юзера с юэтими правами пустой РН. Я что-то забыл сделать?
10 timurhv
 
03.04.23
19:24
(9) все что добавили, это для производительного режима.
Пользователю подразделение добавили? Галочка просмотр в роли у регистра накопления стоит?
11 ArturDoo
 
03.04.23
19:30
(10)Да, у пользователя выставлено подразделение, РЛС на регистраторе это РН работает нормально, Галочка - просмотр стоит
12 ArturDoo
 
03.04.23
19:37
(9) Почитал первое сообщение из другой ветки - Наложение РЛС на РН и подумал, может, правда, не делать РЛС на конкретный РН, но как тогда исключить записи с регистратором, у которого другое подразделение, из отчета?
13 ArturDoo
 
03.04.23
19:38
На регистраторе РЛС работает на форме списка их не видно и из отчета они не открываются, но в отчет тянутся строки с "ненужным" регистратором?
14 AlvlSpb
 
03.04.23
20:44
(12) У Регистратора делаешь ограничение по Подразделению. А в отчете - Набор данных запрос - "ВЫБРАТЬ РАЗРЕШЕННЫЕ" никакие данные из РН связанные с запрещенным регистратором не попадут в отчет
15 ArturDoo
 
03.04.23
22:01
(14) Так ограничение-то РЛС делается, или у тебя есть еще варианты?
16 magicSan
 
03.04.23
22:09
17 AlvlSpb
 
03.04.23
22:53
(15) Конечно, РЛС. Но в регистраторе
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший