Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 11:42
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Сложное разграничение доступа к документу!  (Прочитано 7124 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Добрый день. Интиресную задачу поставили передо мной. Вот только решить ее не знаю как)

У меня есть документ ВнутреннеПеремещение и две роли: Администратор и РядовойСотрудник. Хотя фактически пользователей больше...
У Администратора есть все права. У РядовогоПользователя есть возможность Изменять, Редактировать и Проводить документ.

Задача: Как сделать, что бы РядовойПользователь не мог интерактивно изменять уже проведенный документ а мог лишь установить один флажек и сохранить документ?

Специфика такая. В уже проведенном документе, иногда, РядовомуПользователю необходимо установить флажек и сохранить документ(не проводить его!) именно для этого в свойствах УправляемойФормы документа снят фажек ПроводитьПриИзминении! В такой ситуации РядовойПользователь может кроме установки нужного флажка изменить содержимое других реквизитов документа и сохранить его. Проведен документ естественно не будет, но этого нельзя допустить.

Спасибо за любые предложения!


Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Пока, что вижу решение данной задачи следующим способом:

если документ проведен = истина тогда для конкретной роли конкретные реквизиты не доступны! Доступен только флажек который можно установить.

но как выполнить такое на уровне Ролей а не Пользователей не знаю?
Может есть еще какие то варианты?

Оффлайн valerasv

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 1
  • КПД: 7%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Программист 1С
Самый простой вариант по хэлпу

РольДоступна (IsInRole)

Синтаксис:
РольДоступна(<Роль>)

Параметры:
<Роль> (обязательный)
Тип: Строка, ОбъектМетаданных: Роль. Название роли как она задана в конфигураторе или объект описания метаданного роли.
Возвращаемое значение:
Тип: Булево. Истина - роль доступна текущему пользователю; Ложь - в противном случае.

Описание:
Определяет доступность указанной роли текущему пользователю.

Пример:
Если Не РольДоступна("Менеджер") Тогда
    Сообщить("Просмотр заявок от покупателей не разрешен!");
КонецЕсли;

Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Спасибо valerasv. Очень к стати. Проверил, работает.

Получается, теперь Если документ проведен и у пользователя нет роли Администратора то делать все реквизиты формы Доступность = Ложь делая документ для РядовогоПользователя рид онли.

Может есть какой то способ, при соответствии вышепреведенным условиям делать весь документ сразу ТолькоДляПросмотра? Тойсть, чтоб не возится с элементами формы по отдельности.

Оффлайн valerasv

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 1
  • КПД: 7%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Программист 1С
В настройках Роли у нужного документа снять галочку "Интерактивное изменение проведенных".
Там же можно сделать и другие настройки для установки/отмены действий с документом для данной роли,
и программировать ничего не придется.....

Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Дело в том, что при выключенном "Интерактивное изменение проведенных" у меня не удается выполнить процедуру Печать и ВывестиНаОсновании...
может я что то не так делаю?

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
у самой формы есть свойство ТолькоПросмотр. Если его установить в ИСТИНА, то блокируются все элементы управления со свойством ИзменяетДанные=ИСТИНА. Соответственно у нужного флажка - ИзменяетДанные = ЛОЖЬ...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Мужчины valerasv, sergejK74, cska-fanat-kz спасибо Вам огромное за отличные примеры! Вы как всегда мне здорово помогли!
Оказывается вариантов масса) и можно дать волю фонтазии)

Тема закрыта.

Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Поспешил с закрытием темы)

Если я делаю так
Для Каждого Элемент из ЭтаФорма.Элементы Цикл
Элемент.Видимость = Ложь;
       //КонецЦикла;

Оффлайн |R|U|D|E|N

  • ***
  • Сообщений: 217
  • РЕПУТАЦИЯ: 3
  • КПД: 1%
  • Регистрация: 2011-01-09
  • Компания: Virtual-Kernel | KVM | Xen
  • Профессия: Разработчик 1С
Простите за предидущее сообщение

Если делаю так:

Для Каждого Элемент из ЭтаФорма.Элементы Цикл
Элемент.Доступность = Ложь;
КонецЦикла;
Элементы.Отработан.Доступность = Истина;

то в таком случае, вся форма превращается в картинку. нет возможности не скопировать данные и даже посмотреть содержимое других страниц формы.

Поэтому я делаю так:

Для Каждого Элемент из ЭтаФорма.Элементы Цикл
Элемент.ТолькоПросмотр = Истина;
КонецЦикла;
Элементы.Отработан.ТолькоПросмотр = Ложь;

В результате, вываливается ошибка о не возможности найти такое свойство у некоторых элементов. Я так понемаю, что не все элемены формы имеют свойство ТолькоПросмотр. А как можно это проверить и обойти в цикле?


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
alex0402
44 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 814
  • Точка Скрытых: 0
  • Точка Пользователей: 12
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal