Имя: Пароль:
1C
1С v8
Запрос в документе к самому себе RLS.
0 OnCheck
 
17.08.12
11:48
Добрый день, господа.
Пытаюсь навешать RLS на документы. Делаю в ЗУП, путем дописания стандратного шаблона, использую все типовые объекты. (Кто не вкурсе, РЛС по ПодразделениямОрганизации работает только для вакансий и кандидатов. Пытаюсь навешать их так же на документы.)
Дописал шаблон. При открытии формы списка. документ РЛС успешно фильтрует.
Дает открыть документ, модифицировать и проводить, но... при проведении в запросе к шапке не дает выбрать самого себя, т.е. запрос возвращется пустым. Натолкните на мысль почему запрос к самому себе пустой?
В дополнении скажу, если выполняю запроса в консоли запроса, то документ возвращается, траблы только при обработке проведения. Так же, если убираю поля на которых стоит РЛС, запрос возвращает документ. Нид хелп. Спасибо.
1 Лоботряс
 
17.08.12
11:52
На какие права ставил шаблон?
2 OnCheck
 
17.08.12
11:54
На КадровикРегламентныхДанных, у пользователя права "Пользователь,КадровикРегламентныхДанных"
3 Лоботряс
 
17.08.12
11:54
ну и текст шаблона было бы неплохо наверное
4 Лоботряс
 
17.08.12
11:54
Не, на чтение, изменение?
5 OnCheck
 
17.08.12
11:56
большой :-), сейчас
6 OnCheck
 
17.08.12
11:56
// Шаблон огланичения доступа ОбщееУправлениеДоступом позволяет ограничить доступ к текущей таблице по одному или двум
// объектам ограничения доступа
//
// Параметры:
//  Параметр(1) - Уровень доступа. Возможные значения:    "Чтение", "ЧтениеСписка", "ЧтениеДанныхСГруппами",
//                "Запись", "ЧтениеСГруппами", "ЗаписьСГруппами"
//      "Чтение" -          чтение всей таблицы, кроме справочника ФизическиеЛица для которого чтение всей
//                            таблицы это - "ЧтениеДанныхСГруппами"
//      "ЧтениеСпискаСГруппами" - применяется для справочника ФизическиеЛица - чтение
//                          только тех данных таблицы, которые позволяют отображать список объектов
//      "ЧтениеДанныхСГруппами" - чтение всех данных таблицы без ограничения доступа к группам справочника,
//                          допустимо применение только для справочника ФизическиеЛица
//      "Запись" -          запись данных в таблицу
//      "ЧтениеСГруппами" - чтение таблицы без ограничения доступа к группам справочника, применяется для справочников
//                          с иерархией групп и элементов (например, Сотрудники)
//      "ЗаписьСГруппами" - запись таблицы без ограничения записи групп справочника, применяется для справочников
//                          с иерархией групп и элементов (например, Сотрудники)
//
//  Первый объект доступа:
//  Параметр(2) - Имя объекта доступа (см. перечисление ВидыОбъектовДоступа).
//                Обязательно - непустая строка
//  Параметр(3) - Имя поля таблицы с объектами доступа, содержащего ссылку на группу доступа (пример - ГруппаДоступаФизическогоЛица)
//                Если задана пустая строка, то таблица объектов доступа не содержит такого поля (пример - Организации)
//  Параметр(4) - Имя поля текущей таблицы в котором находится ссылка на объект доступа.
//                Обязательно - непустая строка
//  Параметр(5) - Полное имя вложенной таблицы (табличной части) в которой находится ссылка на объект доступа
//                Полное имя это, например, "Документ.НачислениеЗарплаты.ФизическиеЛица"
//                Если задана пустая строка, то поле из Параметр(4) находится непосредственно в текущей таблице
//
//  Второй объект доступа задается параметрами 6-9. Назначение - такое же, как для параметров 2-5
//  Если Параметр(6) (имя второго объекта доступа) задан как пустая строка, то доступ к текущей таблице ограничивается
//  только по одному объекту доступа. При этом все параметры 6-9 должны быть заданы как пустые строки (иное
//  просто не имеет смылса)
//
//  Параметр(10)- Имя поля со значеним булево, по котому налагается дополнитеьное ограничение
//                Применяется для ограничения по виду учета (регламентированный, управленческий)
//
//  Все десять параметров шаблона должны быть явно заданы.
//
//  Пример использования:
//      <решетка>ОбщееУправлениеДоступом("Чтение",
//      "Организации", "", "Организация", "",
//      "ФизическиеЛица", "ГруппаДоступаФизическогоЛица", "Физлицо", "Документ.НачислениеЗарплаты.ФизическиеЛица",
//      "")
//      Здесь ограничичается доступ на чтение
//      Текущая таблица ограничивается по двум объектам - организациям и физическим лицам
//      При этом ссылка на организацию находится в поле "Организация", а ссылка на физлицо в
//      поле "ФизЛицо" табличной части "РаботникиОрганизации"
//      Ограничения доступа задаются в геристре НастройкиПравДоступаПользователей для групп физических лиц, а не
//      для физических лиц непосредственно. При этом поле справочника физических лиц с группами доступа
//      называется "ГруппаДоступаФизическогоЛица"
//      Ограничение по виду учета не устанавливается
//      
//

//{pack by stas 2012-08-13
//##Если &ИспользоватьОграничениеПо#Параметр(2) ИЛИ &ИспользоватьОграничениеПо#Параметр(6) ##Тогда
##Если &ИспользоватьОграничениеПо#Параметр(2) ИЛИ &ИспользоватьОграничениеПо#Параметр(6) ИЛИ &ИспользоватьОграничениеПо#Параметр(11) ##Тогда
//}
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
       СоставГруппы.Ссылка КАК ГруппаПользователей
   ИЗ
       Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
   ГДЕ
       СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
   ПО (ИСТИНА)
ГДЕ
##Если "#Параметр(1)" = "ЧтениеСГруппами" ИЛИ "#Параметр(1)" = "ЧтениеДанныхСГруппами"  ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ИЛИ "#Параметр(1)" = "ЧтениеСпискаСГруппами" ##Тогда
ТекущаяТаблица.ЭтоГруппа ИЛИ
##КонецЕсли
##Если "#Параметр(10)" <> "" ##Тогда    
ТекущаяТаблица.#Параметр(10) = ИСТИНА И
##КонецЕсли
(НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1 КАК ПолеОтбора
   ИЗ
       РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
   ГДЕ
       НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
       И ВЫБОР
           // без групп доступа, поле доступа в шапке
           ##Если &ИспользоватьОграничениеПо#Параметр(2) И "#Параметр(3)" = "" И ("#Параметр(5)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   (ВЫБРАТЬ
       1 КАК ПолеОтбора
   ) КАК Оптимизация
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(4)
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
       ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(2)" = "ФизическиеЛица" ##Тогда
       И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
       ##КонецЕсли
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в шапке
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(2) И (НЕ ("#Параметр(3)" = "")) И ("#Параметр(5)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   Справочник.#Параметр(2) КАК ОбъектыДоступа
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(3)
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
       ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(2)" = "ФизическиеЛица" ##Тогда
       И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
       ##КонецЕсли
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
ГДЕ
   ОбъектыДоступа.Ссылка = ТекущаяТаблица.#Параметр(4)
)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // без групп доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(2) И "#Параметр(3)" = "" И (НЕ ("#Параметр(5)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(5) КАК ТабличнаяЧасть
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
           НастройкиПравДоступаПользователей.ОбъектДоступа = ТабличнаяЧасть.#Параметр(4)
           И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
           ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(2)" = "ФизическиеЛица" ##Тогда
           И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           ##КонецЕсли
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(2) И (НЕ "#Параметр(3)" = "") И (НЕ ("#Параметр(5)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(5) КАК ТабличнаяЧасть
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.#Параметр(2) КАК ОбъектыДоступа
       ПО
           ОбъектыДоступа.Ссылка = ТабличнаяЧасть.#Параметр(4)
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
           НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(3)
           И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(2))
           ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(2)" = "ФизическиеЛица" ##Тогда
           И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           ##КонецЕсли
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           ##КонецЕсли

           // без групп доступа, поле доступа в шапке
           ##Если &ИспользоватьОграничениеПо#Параметр(6) И "#Параметр(7)" = "" И ("#Параметр(9)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   (ВЫБРАТЬ
       1 КАК ПолеОтбора
   ) КАК Оптимизация
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(8)
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
       ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(6)" = "ФизическиеЛица" ##Тогда
       И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
       ##КонецЕсли
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в шапке
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(6) И (НЕ ("#Параметр(7)" = "")) И ("#Параметр(9)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   Справочник.#Параметр(6) КАК ОбъектыДоступа
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(7)
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
       ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(6)" = "ФизическиеЛица" ##Тогда
       И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
       ##КонецЕсли
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
ГДЕ
   ОбъектыДоступа.Ссылка = ТекущаяТаблица.#Параметр(8)
)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // без групп доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(6) И "#Параметр(7)" = "" И (НЕ ("#Параметр(9)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(9) КАК ТабличнаяЧасть
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
           НастройкиПравДоступаПользователей.ОбъектДоступа = ТабличнаяЧасть.#Параметр(8)
           И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
           ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(6)" = "ФизическиеЛица" ##Тогда
           И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           ##КонецЕсли
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(6) И (НЕ "#Параметр(7)" = "") И (НЕ ("#Параметр(9)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(9) КАК ТабличнаяЧасть
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.#Параметр(6) КАК ОбъектыДоступа
       ПО
           ОбъектыДоступа.Ссылка = ТабличнаяЧасть.#Параметр(8)
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
           НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(7)
           И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(6))
           ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(6)" = "ФизическиеЛица" ##Тогда
           И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           ##КонецЕсли
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           ##КонецЕсли

//{pack by stas 2012-08-13
           
           // без групп доступа, поле доступа в шапке
           ##Если &ИспользоватьОграничениеПо#Параметр(11) И "#Параметр(12)" = "" И ("#Параметр(14)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   (ВЫБРАТЬ
       1 КАК ПолеОтбора
   ) КАК Оптимизация
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       //НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(13)
       //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
       НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
//pack
   ГДЕ
       ВЫБОР
                       
##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда

   КОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В
   (
   ВЫБРАТЬ ПЕРВЫЕ 1
   
       ВЫБОР
           КОГДА
               ТабличнаяЧасть.ПериодЗавершения > НачалоДня(&ТекущаяДата) ИЛИ ТабличнаяЧасть.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
               ТОГДА ТабличнаяЧасть.ПодразделениеОрганизации
           ИНАЧЕ
               ТабличнаяЧасть.ПодразделениеОрганизацииЗавершения
       КОНЕЦ
       
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК ТабличнаяЧасть
   ГДЕ
       ТабличнаяЧасть.Период <= НачалоДня(&ТекущаяДата)
       И ТабличнаяЧасть.Сотрудник = ТекущаяТаблица.Ссылка
   УПОРЯДОЧИТЬ ПО
       ТабличнаяЧасть.Период Убыв
   )
   ТОГДА ИСТИНА
   ИНАЧЕ ЛОЖЬ

##Иначе
                       
   КОГДА 1 В
   (
   ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК ТабличнаяЧасть
   ГДЕ
       ВЫБОР
           КОГДА
               ТабличнаяЧасть.ПериодЗавершения > &ТекущаяДата ИЛИ ТабличнаяЧасть.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
               ТОГДА ТабличнаяЧасть.ПодразделениеОрганизации
           ИНАЧЕ
               ТабличнаяЧасть.ПодразделениеОрганизацииЗавершения
       КОНЕЦ = НастройкиПравДоступаПользователей.ОбъектДоступа
       И ТабличнаяЧасть.Сотрудник = ТекущаяТаблица.Ссылка
   
           
   )
   ТОГДА ИСТИНА
   ИНАЧЕ ЛОЖЬ

##КонецЕсли

   КОНЕЦ

//}

)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в шапке
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(11) И (НЕ ("#Параметр(12)" = "")) И ("#Параметр(14)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   Справочник.#Параметр(11) КАК ОбъектыДоступа
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(12)
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
       ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(11)" = "ФизическиеЛица" ##Тогда
       И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
       ##КонецЕсли
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
ГДЕ
   ОбъектыДоступа.Ссылка = ТекущаяТаблица.#Параметр(13)
)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // без групп доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(11) И "#Параметр(12)" = "" И (НЕ ("#Параметр(14)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(14) КАК ТабличнаяЧасть
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
           НастройкиПравДоступаПользователей.ОбъектДоступа = ТабличнаяЧасть.#Параметр(13)
           И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
           ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(11)" = "ФизическиеЛица" ##Тогда
           И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           ##КонецЕсли
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(11) И (НЕ "#Параметр(12)" = "") И (НЕ ("#Параметр(14)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(14) КАК ТабличнаяЧасть
//{pack by stas 2012-08-13
       //ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.#Параметр(11) КАК ОбъектыДоступа
       //ПО
       //    ОбъектыДоступа.Ссылка = ТабличнаяЧасть.#Параметр(13)
//}
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
//{pack by stas 2012-08-13
           НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
           //НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(12)
           //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
           //##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(11)" = "ФизическиеЛица" ##Тогда
           //И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           //##КонецЕсли
//}
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
//{pack by stas 2012-08-13

       И ВЫБОР
       КОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В
       (
       ВЫБРАТЬ ПЕРВЫЕ 1
       
           ВЫБОР
               КОГДА
                   РаботникиОрганизаций.ПериодЗавершения > #Параметр(12) ИЛИ РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
                   ТОГДА РаботникиОрганизаций.ПодразделениеОрганизации
               ИНАЧЕ
                   РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения
           КОНЕЦ
           
       ИЗ
           РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ГДЕ
           РаботникиОрганизаций.Период <= #Параметр(12)
           И РаботникиОрганизаций.Сотрудник = ТабличнаяЧасть.Сотрудник
       УПОРЯДОЧИТЬ ПО
           РаботникиОрганизаций.Период Убыв
       )
       ТОГДА ЛОЖЬ
       ИНАЧЕ ИСТИНА
       
       КОНЕЦ

       //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
       ))
//}
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           ##КонецЕсли

//}
           
           ИНАЧЕ ИСТИНА
       КОНЕЦ = ЛОЖЬ))
       И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
##КонецЕсли
7 pumbaEO
 
17.08.12
11:56
(5) Ты в УТ 11 посмотри, вот там большой.
8 OnCheck
 
17.08.12
11:57
впрнципеи важно только это:
9 OnCheck
 
17.08.12
11:58
//{pack by stas 2012-08-13
           
           // без групп доступа, поле доступа в шапке
           ##Если &ИспользоватьОграничениеПо#Параметр(11) И "#Параметр(12)" = "" И ("#Параметр(14)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   (ВЫБРАТЬ
       1 КАК ПолеОтбора
   ) КАК Оптимизация
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       //НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(13)
       //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
       НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
//pack
   ГДЕ
       ВЫБОР
                       
##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда

   КОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В
   (
   ВЫБРАТЬ ПЕРВЫЕ 1
   
       ВЫБОР
           КОГДА
               ТабличнаяЧасть.ПериодЗавершения > НачалоДня(&ТекущаяДата) ИЛИ ТабличнаяЧасть.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
               ТОГДА ТабличнаяЧасть.ПодразделениеОрганизации
           ИНАЧЕ
               ТабличнаяЧасть.ПодразделениеОрганизацииЗавершения
       КОНЕЦ
       
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК ТабличнаяЧасть
   ГДЕ
       ТабличнаяЧасть.Период <= НачалоДня(&ТекущаяДата)
       И ТабличнаяЧасть.Сотрудник = ТекущаяТаблица.Ссылка
   УПОРЯДОЧИТЬ ПО
       ТабличнаяЧасть.Период Убыв
   )
   ТОГДА ИСТИНА
   ИНАЧЕ ЛОЖЬ

##Иначе
                       
   КОГДА 1 В
   (
   ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК ТабличнаяЧасть
   ГДЕ
       ВЫБОР
           КОГДА
               ТабличнаяЧасть.ПериодЗавершения > &ТекущаяДата ИЛИ ТабличнаяЧасть.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
               ТОГДА ТабличнаяЧасть.ПодразделениеОрганизации
           ИНАЧЕ
               ТабличнаяЧасть.ПодразделениеОрганизацииЗавершения
       КОНЕЦ = НастройкиПравДоступаПользователей.ОбъектДоступа
       И ТабличнаяЧасть.Сотрудник = ТекущаяТаблица.Ссылка
   
           
   )
   ТОГДА ИСТИНА
   ИНАЧЕ ЛОЖЬ

##КонецЕсли

   КОНЕЦ

//}

)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в шапке
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(11) И (НЕ ("#Параметр(12)" = "")) И ("#Параметр(14)" = "") ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   Справочник.#Параметр(11) КАК ОбъектыДоступа
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
   ПО
       НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(12)
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
       ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(11)" = "ФизическиеЛица" ##Тогда
       И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
       ##КонецЕсли
       И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
       ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
       И НастройкиПравДоступаПользователей.Запись = ИСТИНА
       ##КонецЕсли
ГДЕ
   ОбъектыДоступа.Ссылка = ТекущаяТаблица.#Параметр(13)
)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // без групп доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(11) И "#Параметр(12)" = "" И (НЕ ("#Параметр(14)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(14) КАК ТабличнаяЧасть
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
           НастройкиПравДоступаПользователей.ОбъектДоступа = ТабличнаяЧасть.#Параметр(13)
           И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
           ##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(11)" = "ФизическиеЛица" ##Тогда
           И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           ##КонецЕсли
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
       И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           // с группами доступа, поле доступа в табличной части
           ##ИначеЕсли &ИспользоватьОграничениеПо#Параметр(11) И (НЕ "#Параметр(12)" = "") И (НЕ ("#Параметр(14)" = "")) ##Тогда
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
               ТОГДА
               ВЫБОР
КОГДА (НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1
   ИЗ
       #Параметр(14) КАК ТабличнаяЧасть
//{pack by stas 2012-08-13
       //ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.#Параметр(11) КАК ОбъектыДоступа
       //ПО
       //    ОбъектыДоступа.Ссылка = ТабличнаяЧасть.#Параметр(13)
//}
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
       ПО
//{pack by stas 2012-08-13
           НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
           //НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.#Параметр(12)
           //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.#Параметр(11))
           //##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "#Параметр(11)" = "ФизическиеЛица" ##Тогда
           //И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
           //##КонецЕсли
//}
           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
           ##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
           И НастройкиПравДоступаПользователей.Запись = ИСТИНА
           ##КонецЕсли
   ГДЕ
       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
//{pack by stas 2012-08-13

       И ВЫБОР
       КОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В
       (
       ВЫБРАТЬ ПЕРВЫЕ 1
       
           ВЫБОР
               КОГДА
                   РаботникиОрганизаций.ПериодЗавершения > #Параметр(12) ИЛИ РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
                   ТОГДА РаботникиОрганизаций.ПодразделениеОрганизации
               ИНАЧЕ
                   РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения
           КОНЕЦ
           
       ИЗ
           РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ГДЕ
           РаботникиОрганизаций.Период <= #Параметр(12)
           И РаботникиОрганизаций.Сотрудник = ТабличнаяЧасть.Сотрудник
       УПОРЯДОЧИТЬ ПО
           РаботникиОрганизаций.Период Убыв
       )
       ТОГДА ЛОЖЬ
       ИНАЧЕ ИСТИНА
       
       КОНЕЦ

       //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL))
       ))
//}
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
               КОНЕЦ
           ##КонецЕсли

//}
10 Лоботряс
 
17.08.12
12:00
офигеть...
11 OnCheck
 
17.08.12
12:01
(10) а куда деваться?
12 OnCheck
 
17.08.12
12:06
Суть в том что на уровне Списка документов работает исправно, но на уровне запроса в обработке проведения нет, почему так может быть?
13 Лоботряс
 
17.08.12
12:09
(12)ну в списке - право просмотр по-моему, а в обработке проведения - чтение.
14 OnCheck
 
17.08.12
12:10
(13) не, опытным путем установил, что список реагирует на право "чтение" :-)
15 Лоботряс
 
17.08.12
12:15
в порядке бреда - нужно через ИЛИ добавить условие, которое проверяет ссылку на текущий документ, если ссылка равна, то истина
16 OnCheck
 
17.08.12
12:16
вот перевод запроса в более читабельную форму
17 OnCheck
 
17.08.12
12:16
ВЫБРАТЬ

   Ссылка
   
ИЗ Документ.ПриемНаРаботуВОрганизацию КАК ТекущаяТаблица
   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
       СоставГруппы.Ссылка КАК ГруппаПользователей
   ИЗ
       Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
   ГДЕ
       СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
   ПО (ИСТИНА)
ГДЕ
(НЕ 1 В
   (ВЫБРАТЬ ПЕРВЫЕ 1
       1 КАК ПолеОтбора
   ИЗ
       РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
   ГДЕ
       НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
       И ВЫБОР
           
           // с группами доступа, поле доступа в табличной части
           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПодразделенияОрганизаций)
               ТОГДА
               ВЫБОР
               КОГДА (НЕ 1 В
                   (ВЫБРАТЬ ПЕРВЫЕ 1
                       1
                   ИЗ
                       Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ТабличнаяЧасть
                       //ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ОбъектыДоступа
                       //ПО
                       //    ОбъектыДоступа.Ссылка = ТабличнаяЧасть.ПодразделениеОрганизации
                       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                       ПО
                           //НастройкиПравДоступаПользователей.ОбъектДоступа = ОбъектыДоступа.Ссылка
                           //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПодразделенияОрганизаций)
                           НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПодразделенияОрганизаций)
                           //##Если "#Параметр(1)" <> "ЧтениеСпискаСГруппами" И "ПодразделенияОрганизаций" = "ФизическиеЛица" ##Тогда
                           //И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ФизическиеЛицаДанные)
                           //##КонецЕсли
                           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                           //##Если "#Параметр(1)" = "Запись" ИЛИ "#Параметр(1)" = "ЗаписьСГруппами" ##Тогда
                           //И НастройкиПравДоступаПользователей.Запись = ИСТИНА
                           //##КонецЕсли
                   ГДЕ
                       ТабличнаяЧасть.Ссылка = ТекущаяТаблица.Ссылка
                       
                       И ВЫБОР
                       КОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В
                       (
                       ВЫБРАТЬ ПЕРВЫЕ 1
                       
                           ВЫБОР
                               КОГДА
                                   РаботникиОрганизаций.ПериодЗавершения > ТабличнаяЧасть.ДатаПриема ИЛИ РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1,1,1)
                                   ТОГДА РаботникиОрганизаций.ПодразделениеОрганизации
                               ИНАЧЕ
                                   РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения
                           КОНЕЦ
                           
                       ИЗ
                           РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                       ГДЕ
                           РаботникиОрганизаций.Период <= ТабличнаяЧасть.ДатаПриема
                           И РаботникиОрганизаций.Сотрудник = ТабличнаяЧасть.Сотрудник
                       УПОРЯДОЧИТЬ ПО
                           РаботникиОрганизаций.Период Убыв
                       )
                       ТОГДА ЛОЖЬ
                       ИНАЧЕ ИСТИНА
                       
                       КОНЕЦ
                       //И НастройкиПравДоступаПользователей.ВидОбъектаДоступа ЕСТЬ NULL
                       ))
               ТОГДА ИСТИНА
               ИНАЧЕ ЛОЖЬ
               КОНЕЦ


           
           ИНАЧЕ ИСТИНА
       КОНЕЦ = ЛОЖЬ))
       И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
18 OnCheck
 
17.08.12
12:17
(15) добавить где?
19 Лоботряс
 
17.08.12
12:21
в шаблон
20 OnCheck
 
17.08.12
12:23
(19) а текущий документ я как передам? только не говори про параметры сеанса :-)
21 OnCheck
 
17.08.12
12:27
убрал слово "разрешенные" из запроса, и соответственно получил "У пользователя недостаточно прав на исполнение операции над базой данных."
22 Лоботряс
 
17.08.12
12:33
(20)молчу:), хз может как-то можно извратиться... вникать в твой огромный шаблон, извини, сил нет:))
23 OnCheck
 
17.08.12
12:36
дык дело то в том запрос правильный, условия все верные, в чем именно извращаться не понимаю. Я уже и ветку в консоли запроса назвал извраты :-)
24 Лоботряс
 
17.08.12
12:50
(20)+(опять же в порядке бреда...), а как параметр из текущей таблицы нельзя передать?
25 OnCheck
 
17.08.12
12:55
тогда вернутся все документы, запись будет равна самой себе.
26 Лоботряс
 
17.08.12
12:56
я просто держу твою ветку на плаву :))
27 OnCheck
 
17.08.12
12:57
я понял :-), полагаю, что не пятницу, самая фигня, что отладчиком туда ни как не влезть.
28 Homer
 
17.08.12
13:02
а если попробовать добавить к списку разрешенных подразделений пустое подразделение!
29 Homer
 
17.08.12
13:03
точнее "пустое значение"
30 OnCheck
 
18.08.12
21:49
в пнд надо будет попробовать, а есть еще варианты?
31 Nexux
 
18.08.12
22:36
офф: парсер лох (с)
32 OnCheck
 
20.08.12
07:07
Тема все еще актуальна, по каким причинам RLS отрабатывает по разном в режиме просмотра списка документов и в режиме проведения документа. В режиме просмотра , доки видный и открываются, а так же проводятся, а в режиме проведения, документ не может получить ссылку на самого себя!?
33 OnCheck
 
20.08.12
12:26
(29) да, ты совершенно прав, в момент проведения , документ непроведен, а доступность документа основывается на результате проведения документа, поэтому нужно вводить дополнительные условия, ОГРОМНОЕ спасибо за подсказку!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn