|
Запрос в документе к самому себе 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) да, ты совершенно прав, в момент проведения , документ непроведен, а доступность документа основывается на результате проведения документа, поэтому нужно вводить дополнительные условия, ОГРОМНОЕ спасибо за подсказку!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |