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