8.х Создание Ограничений прав пользователя

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем FLoYD777, 7 сен 2009.

  1. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    УТ 10.3
    Необходимо закрыть пользователю доступ ко всем документам которые относятся к определенному списку Складов. Т.е. Администратор устанавливает список складов к которым доступ определенным пользователям должен быть закрыт, они вообще не должны видеть эти документы!!
    У меня получается это сделать для одного склада:
    Я создаю Роль в которой выставляю свои правила(ограничения), так же я создал ПараметрСеанса с типом СправочникСсылка.Склад и в МодулеСеанса устанавливаю значение для этого параметра.
    Сделал интерфейс, запускаю и все отлично!!!
    А вот как сделать, чтобы пользователь(администратор) мог задать самостоятельно этот список складов??? И вообще я делал для одного значения, а какой тип использовать для целого СпискаЗначений и как это вообще лучше реализовывать??? подскажите плиз, очень срочно нужно сделать!!!
  2. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    разобрался :unsure:
  3. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    что то я погорячился с "разобрался"=)

    Есть документ ЗаказПоставщику, он ограничен по складу и статьям затрат, ограничения устанавливаются администратором в двух РегистрахСведений.
    И есть документ "АккредитивПереданный", в котором есть поле Сделка в которую подтягивается ссылка документа ЗаказПоставщика.

    Захожу под пользователем на которого наложены ограничения. Открываю документ "АккредитивПереданный" и вижу, что в поле Сделка написано: "<Объект не найден> (74:a2c300055d80a2d111d9596b1eacb854)", так как действует ограничение по заказам.
    Как мне сделать чтобы документы с таким значение поля Сделка не показывались вообще??
  4. ПашТет
    Offline

    ПашТет

    Регистрация:
    9 сен 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Ты сделал ограничение доступа на этого пользователя(или роль) - поэтому и "Объект не найден". Я думаю, что тебе нужно убрать видимость этого поля у данного пользователя(или роли)
  5. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    что то я не понял, что имеется ввиду в выше сказанном...

    Я создал Роль, в этой Роли установил ограничения по складу и затратам по документу ЗаказПоставщику.
    Затем мне необходимо установить ограничение по документу Аккредитив(переданный), таким образом, чтобы документ не показывался в списке документов Аккредитив(переданный) если ЗаказПокупателя закрыт(т.е. "объект не найден").
    Как поставить условие в роли по документу Аккредитив(переданный) чтобы получилось выше сказанное????
  6. ПашТет
    Offline

    ПашТет

    Регистрация:
    9 сен 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    если я тебя правильно понял, то попробуй так
    Код:
    Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
    //указать в каком справочнике содержиться аккредитив
    Если Пользователь <> Справочники.Аккредитив(переданный).НайтиПоНаименованию("ТвояВашаРоль") Тогда
    ЭлементыФормы.[ТвойЭлемент].Видимость = Ложь;
    КонецЕсли;
    
  7. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    это где такое написать надо??=)
    вы меня неправильно поняли...
    чуть позже постараюсь объяснить более понятно...
  8. DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Для начала покажите текст запроса который прописан в RLS для "ЗаказаПокупателя" и "АккредитивПереданный".
  9. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Как ограничен ЗаказПоставщику не важно... Главное знать, что есть пользователь назовем его "Абдула"=))), и есть под него сделаные "интерфейс"(ИнтерфейсАбдулы) и "роль"(РольАбдулы).
    Затем:
    Необходимо было ограничить Абдулу в чтении "ЗаказПоставщику" по складу и статьям затрат!
    Ещё Абдулу необходимо ограничить в чтении "АккредитивПереданный" по условию:
    Если "АккредитивПереданный" содержит ссылку на закрытый документ "ЗаказПоставщику", то документ "АккредитивПереданный" не должен попадать в список документов "АккредитивПереданный"! Вот собственно и все...

    На данный момент я ограничил "ЗаказПоставщику".
    С документом "АккредитивПереданный" я ничего не делал!!!!!!
    Просматриваю список документов "АккредитивПереданный" у которых в поле "Сделка" идет ссылка на закрытый документ "ЗаказПоставщику" и вижу в этом поле надпись - "Объект не найден...", так вот мне необходимо чтобы документы "АккредитивПереданный" с таким значением поля не попадали в список документов... т.е. пользователь не видел эти документы вообще!!!
    эх... надеюсь теперь понятно объяснил... ну если непонятно, то спрашивайте=)
    Только я хотелбы это реализовать с помощью запросов в "Роли", а не кодом в самом документе...
  10. DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Я же и говорю, нужно ограничение из ЗаказаПоставщику, чтобы наложить его на поле Сделка!

    Вобщем гдето так (если Сделка это реквизит шапки документа АккредитивПереданный):
    Код:
    АккредитивПереданный ГДЕ
    
    ВЫБОР
    КОГДА Сделка ССЫЛКА Документ.ЗаказПоставщику ТОГДА
    Сделка = Значение(Документ.ЗаказПоставщику.ПустаяСсылка)
    ИЛИ Сделка = УсловиеИзОграниченийЗаказаПоставщику
    ИНАЧЕ ИСТИНА
    КОНЕЦ
    
    
  11. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    благодарю за помощь)
    но я нашел такую штуку, как ГруппыПользователей.
    Там можно установить ограничения для Групп по организации и контрагентам.
    я посмотрел все это дело и понял, что я начал организовывать ограничения неправильно и что реализовать ограничения которые мне необходимы будет лучше оттуда.
    а надо мне сделать ограничения пользователей по Складам и СтатьямЗатрат.
    я начал делать, частично реализовал... но я не уверен в правильности реализованного...
    я добавил в Перечисления.ВидыОбъектовДоступа новые значения - Склады и СтатьиЗатрат.
    затем создал две вкладки Склады и СтатьиЗатрат в обработчике НастройкаПравДоступа и соответственно подключил к ним все процедуры и функции в событиях и чуть подправил код...
    затем подправил ТипДанных измерений РегистраСведений.НастройкиПравДоступаПользователей...

    насколько я понимаю, то мне осталось написать шаблоны ограничений для Ролей и соответственно подключить их...
    если я до этого момента делал все правильно, то можно переходить дальше:
    вопрос1: там есть РегистрСведений.НазначениеВидовОбъектовДоступа - так и не понял зачем он нужен... и ещё один "НазначенияСвойствОбъектов", та же проблема...
    вопрос2: Перечисления.ОбластиДанныхОбъектовДоступа в нем есть значение "КонтрагентыСписок", та же проблема... зачем нужен этот список?? почему для контрагента используется этот список, а для организации - нет??
    вопрос3: помогите разобратся с уже созданным шаблоном для контрагентов и организаций...
    Код:
    ##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда
    ТекущаяТаблица <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/из')">ИЗ #ТекущаяТаблица КАК ТекущаяТаблица</span>
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
    СоставГруппы.Ссылка КАК ГруппаПользователей
    ИЗ
    Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
    ГДЕ
    СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
    ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
    ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
    ИЛИ (НЕ 1 В
    (ВЫБРАТЬ ПЕРВЫЕ 1
    1 КАК ПолеОтбора
    ИЗ
    РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
    ГДЕ
    НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
    И ВЫБОР
    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/и')">	И ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Организации</span>
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/и')">	И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)</span>
    ТОГДА ВЫБОР
    КОГДА 1 В
    (ВЫБРАТЬ ПЕРВЫЕ 1
    1
    ИЗ
    (ВЫБРАТЬ
    1 КАК ПолеОтбора
    ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
    ПО
    НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
    И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
    И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)))
    ТОГДА ИСТИНА
    ИНАЧЕ ЛОЖЬ
    КОНЕЦ
    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/и')">	И ТекущаяТаблица.#Параметр(2) ССЫЛКА Справочник.Контрагенты</span>
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/и')">	И НЕ ТекущаяТаблица.#Параметр(2) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)</span>
    ТОГДА ВЫБОР
    КОГДА 1 В
    (ВЫБРАТЬ ПЕРВЫЕ 1
    1
    ИЗ
    Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
    ПО
    НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту
    И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
    И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
    ГДЕ
    Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(2))
    ТОГДА ИСТИНА
    ИНАЧЕ ЛОЖЬ
    КОНЕЦ
    ИНАЧЕ ИСТИНА
    КОНЕЦ = ЛОЖЬ))
    И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
    ##КонецЕсли
    
    
  12. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    да и кстати заметил ещё один справочник "ГруппыДоступностиСкладов", лучше его использовать или впринципи можно оставить, так как я сделал, т.е. через справочник "Склады"?

Поделиться этой страницей