1
2
Показывать по
10
20
40
сообщений
Новая тема
Ответить
gala2009
Дата регистрации: 11.03.2009
Сообщений: 319
Например, Пользователю с ролью Пользователь1 дать право на изменение реквизита Комментарий в записанных документах Реализация товаров и услуг. Для всех остальных реквизитов право на изменение должно быть закрыто.
StarS
Дата регистрации: 15.07.2003
Сообщений: 1623
Типовыми средствами или через «замочек с конфы снять»?
gala2009
Дата регистрации: 11.03.2009
Сообщений: 319
если типовыми невозможно (что приоритетно)<br>то кодом, все равно замок снят, новая роль создана
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
Платформа 8.2 позволяет такое настроить в ролях. Реквизиты могут быть открыты на просмотр и редактирование.
gala2009
Дата регистрации: 11.03.2009
Сообщений: 319
С реквизитами пробовала, двумя способами, оба не сработали.<br>При настройке роли в Док-те РТиУ Реквизиты, а заодно и Табличные части ставлю на просмотр, реквизит Комментарий на просмотр и редактирование.<br>Но права на сам документ РТиУ перебивают все настройки прав отдельных реквизитов<br>1.Если у него галки на Чтение, Добавление, Изменение, Провендение, Просмотр, ВводПоСтроке (а у Комментария — редактирование) -<br>то в 1С не редактируеися ни одно поле, в тч и Комментарий<br> <br>2. Если в документе добавляем галку Редактирование, интер.измен,инт.пров, инт,отмена(а у всех реквизитов (кроме Комментария) просмотр), то в 1С редактируются все рквизиты, и кол-во и пр
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
А для варианта №1 после снятия общего редактирования выставляли редактирование по-реквизитно?
Тимур15rus
Дата регистрации: 08.11.2008
Сообщений: 613
Ну когда все научатся сначала писать хотя бы версию платформы, о конфигурации уже не говорю.
gala2009
Дата регистрации: 11.03.2009
Сообщений: 319
платформа 8.2.13.219<br>релиз БП 2.0.29.10
gala2009
Дата регистрации: 11.03.2009
Сообщений: 319
> выставляли редактирование по-реквизитно?<br>да, все ревизиты после настройки прав документа только на просмотр (а точнее поставлены первые 7 галок)- стали тоже все на просмотр,<br>а в Комментарий захожу и добавляю еще Редактирование — в итоге он не редактируется, как и все остальные<br> <br>вообще заметила, что редактирование уже записанных и проведенных документов возможно только при галках на правах документа -Интерактивное изменение и Интерактивное проведение, то есть пробуем плясать от этого, и ограничивать только посмотром реквизиты и табличные части- оп! — правится все!
gala2009
Дата регистрации: 11.03.2009
Сообщений: 319
Да, хочу сказать, что экспериментировала с ролью Бухгалтер,<br>сейчас попробую на ПолныхПравах
Право на изменение реквизита документа |
Я |
06.07.06 — 15:47
Подскажите.
Есть документ.В нем есть какой-то реквизит (подразделение, например), к которому для данной роли (Роль1, например) необходимо закрыть доступ. При этом дав возможность редактировать другие реквизиты.
Возможно ли это в принципе, и если да , то
как это сделать, а конкретнее — что написать (какой запрос) в графах «поля» и «ограничение доступа» для данной роли.
1 — 06.07.06 — 15:47
2 — 06.07.06 — 15:49
Если Пользователь=Петров Тогда
Толькопросмотр
КонецЕсли
Суть такая
3 — 06.07.06 — 15:50
ПриОткрытии
4 — 06.07.06 — 15:52
(2)(3)
Имеется в виду не что написать в модулях формы, а именно в РОЛЯХ .
5 — 06.07.06 — 15:59
Тогда «Ограничение доступа к данным»
6 — 06.07.06 — 16:04
(5) В том то и вопрос что написать в этих самых ограничениях
7 — 06.07.06 — 16:13
(6)Да что угодно!Выбрать реквизит и в условиях поставить что Дата<>Дата(1,1,1)
А почему в модуле не прописать?
8 — 06.07.06 — 16:23
в ролях неполучится, только в модуле.
9 — 06.07.06 — 16:28
То есть получается, что на отдельно взятый реквизит в Ролях ограничение доступа (чтение, добавление, изменение, удаление) налаживать нельзя ???
10 — 06.07.06 — 16:32
(9) Чем код-то неустраивает?
11 — 06.07.06 — 16:33
(10) Какой код ???
12 — 06.07.06 — 16:34
(11) В модуле, наподобие (2).
13 — 06.07.06 — 16:40
(12) Тем что хочется знать работает ли это на уровне Ролей
Цитата из 1С : http://v8.1c.ru/overview/PlRights.htm
Ограничение доступа к данным на уровне записей и полей
Для объектных таблиц и регистров сведений могут быть заданы разные ограничения для различных полей таблицы, что позволяет определять ограничения не только на уровне записей базы данных, но и на уровне отдельных ее полей:
Ограничение доступа к данным представляет собой условие, описанное на языке, который является подмножеством языка запросов. Это условие применяется для каждой записи таблицы базы данных, над которой выполняется операция. Если условие принимает значение «истина», то операция выполняется, а если нет, то не выполняется. При просмотре списков и формировании отчетов существует возможность обеспечить отображение только тех данных, доступ к которым пользователю разрешен.
14 — 06.07.06 — 16:45
(12) ограничивать в ролях можно только на чтение, на изменение — нет
15 — 06.07.06 — 17:41
(14) Я дошел, что вроде как ограничивать в ролях можно только на чтение,
но я хочу чтобы для конкретной роли не было права чтения в данном документе к данному реквизиту — такое в ролях возможно ?
У меня плучается если я в роли пытаюсь ограничить чтение какого-то реквизита, не читается весь документ — может я что-то не так делаю ?
Nanyka
16 — 07.07.06 — 14:25
Вроде так.
Если для какой-то роли установить ограничение на отдельный реквизит справочника, то при просмотре формы списка справочника если в форме есть колоннка с этим реквизитом — все элементы видны не будут.
Если в форме списка нет колонки с данным реквизитом, то элементы справочника видны.
Но открыть справочник для редактирования невозможно — пишет «У пользователя недостаточно прав для операции над базой» (даже если для роли установлено ограничение только для этого одного реквизита, которого даже нет в форме элемента)
Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.
Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.
Иногда необходимо разрешить редактирование некоторых реквизитов документа без перепроведения. Например: Комментарий, АдресКонтрагента, КонтактноеЛицо. Ещё бывает необходимым разрешить изменение отдельных реквизитов в закрытых документах. Например, поставить отметку о состоянии доставки и написать комментарий.
В модуле менеджера документа пишем функцию, которая определяет массив допустимых к редактированию реквизитов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Возвращает массив имён реквизитов, разрешённых для изменнения без перепроведения. // Если получен параметр типа Массив, то имена реквизитов добавляются в него Функция ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(МассивРеквизитовДопустимыхКИзменению = Неопределено) Экспорт Если Не ТипЗнч(МассивРеквизитовДопустимыхКИзменению) = Тип(«Массив») Тогда МассивРеквизитовДопустимыхКИзменению = Новый Массив; КонецЕсли; //Типовые реквизиты МассивРеквизитовДопустимыхКИзменению.Добавить(«Грузополучатель»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьДата»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьВыдана»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьЧерезКого»); МассивРеквизитовДопустимыхКИзменению.Добавить(«Комментарий»); МассивРеквизитовДопустимыхКИзменению.Добавить(«АдресДоставки»); //Добавленные реквизиты Возврат МассивРеквизитовДопустимыхКИзменению; КонецФункции |
В модуле ОбщегоНазначения пишем функции общие для всех документов.
// сравниваем реквизиты документа из базы данных с записываемым объектом // имена изменённых реквизитов запихываем в массив Функция ПолучитьСписокИзменённыхРеквизитов(ДокОбъект) Экспорт СписокИзменённыхРеквизитов = Новый Массив; Ссылка = ДокОбъект.Ссылка; мдОбъекта = ДокОбъект.Метаданные(); // сравниваем стандартные реквизиты Для Каждого Реквизит из мдОбъекта.СтандартныеРеквизиты Цикл Если ДокОбъект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда СписокИзменённыхРеквизитов.Добавить(Реквизит.Имя); КонецЕсли; КонецЦикла; |
В модуле документа ПредЗаписью разрешаем запись без пререпроведения в случае, если были изменены только реквизиты, не вызывающие перепроведение.
РедактированиеЗаднимЧислом = Ложь; МассивРеквизитовДопустимыхКИзменению = Документы.РеализацияТоваровУслуг.ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(); СписокИзменённыхРеквизитов = ОбщегоНазначения.ПолучитьСписокИзменённыхРеквизитов(ЭтотОбъект); СписокИзменённыхРеквизитовВызывающихПерепроведение = ОбщегоНазначения.МожноЗаписыватьБезПерепроведения(ЭтотОбъект, МассивРеквизитовДопустимыхКИзменению, СписокИзменённыхРеквизитов); Если СписокИзменённыхРеквизитовВызывающихПерепроведение = «» И Проведен И СписокИзменённыхРеквизитов.Количество() > 0 Тогда РежимЗаписи = РежимЗаписиДокумента.Запись; ИначеЕсли НЕ РедактированиеЗаднимЧислом и Дата < НачалоДня(ТекущаяДата()) И Не РольДоступна(«ПравоАдминистрирования») Тогда Сообщить(«Недостаточно прав для проведения реализации « + Номер + » « + Строка(Дата) + » задним числом. Изменены реквизиты: « + СписокИзменённыхРеквизитовВызывающихПерепроведение); Отказ = Истина; КонецЕсли; |
Оцените статью:
Загрузка…
Если Вы заметили ошибку, то выделите ее мышью и нажмите Ctrl+Enter
В 1С можно настроить ограничения по ролям, т.е. запретить пользователям с определенной ролью изменять какие либо реквизиты или объекты конфигурации. Например, при создание или открытии какого либо документа (справочника) можно запретить изменять номер, дату или другие необходимые элементы. На практики подобные задачи встречаются довольно часто, так как некоторые пользователи могут поменять дату документ или его номер, тем самым нарушить учет документооборота. Реализовать все это достаточно просто.
Программное ограничения по ролям в 1С
Допустить у нас в базе есть роль «Пользователь» и нам необходимо всем учетным записям с данной ролью запретить изменять номер и дату документа поступления, а так же указывать в поле «Ответственный» наименование роли.
Для этого в обработчике события «При создании на сервере» пишем вот такой код.
Если РольДоступна("Пользователь") Тогда
Элементы.Номер.РедактированиеТекста = Ложь;
Элементы.Дата.РедактированиеТекста = Ложь;
Объект.Отвественный = Справочники.Пользователи.НайтиПоКоду("000000002");
Сообщить("У Вас не хватает прав для редактирования реквизитов документа!!!");
КонецЕсли;
Думаю в нем все понять, если учетная запись под которой создается документ имеет роль «Пользователь» тогда запрещаем редактировать «Номер», «Дату» и в поле «Ответственный» подставляем значение из справочника «Пользователи» которое найдем по коду. Под данным кодом в справочнике находиться «Пользователь».
Запустим 1С и посмотрим что получилось, в итоге ввести что-то с клавиатуры в поля «Номер», «Дата» не получиться.
Но если у данного поля есть возможность выбора, например, как у даты то изменить её все же буде возможно.
Для того чтобы исключить подобную ситуацию можно отключить доступность, без ограничения редактирования.
Элементы.Дата.Доступность = Ложь;
Элементы.Номер.Доступность = Ложь;
Элементы.Отвественный.Доступность = Ложь;
В этом случае пользователь уже ни чего не сможет сделать.
Вариантов реализации подобных задач очень много, я показал один из, возможно он даже не самый оптимальной. Если Вы знаете другой обязательно поделитесь!!!
Кстати механизм подставления «Ответственного» тут не совсем корректен, так как в базе может быть много пользователей 10, 20 и если у всех у них есть роль «Пользователь» то она и будет подставляться, тут необходимо подставлять имя пользователя а не роли, с помощью ПользователиИнформационнойБазы.ТекущийПользователь() но об этом в следующей статье.
-
Добрый день!
Скажите пожалуйста как можно дать доступ пользователю изменить определенному реквизиту справочника?
Спасибо! -
Offline
ТехБухПривет
Профессионал в 1С
Команда форума- Регистрация:
- 25 июн 2013
- Сообщения:
- 825
- Симпатии:
- 89
- Баллы:
- 54
Правильно ли я понял менять Определённый реквизит у справочника, но остальное трогать право не имеет?
Если так, то надо создавать отдельную роль(скопировать уже существующую для данного пользователя) и там прописывать данные ограничения.
Но учтите база станет не типовой и придётся переносить при каждом обновлении + вносить изменение вводимые в типовую роль.
Сначала задайтесь вопросом вы к этому готовы? -
Да правильно!
Но конфиг рукописная -
Offline
ТехБухПривет
Профессионал в 1С
Команда форума- Регистрация:
- 25 июн 2013
- Сообщения:
- 825
- Симпатии:
- 89
- Баллы:
- 54
ну если рукописная, то не вижу проблем)) выбираете необходимую роль F9 и препарируете правила доступа к необходимому справочнику со всем вниманием и усердием, а потом уже назначаете нужному пользователю(не путать роли в метаданных и роли назначаемые в администрировании пользователям — если разницу не видите — лучше не трогать)
-
так?
-
Offline
ТехБухПривет
Профессионал в 1С
Команда форума- Регистрация:
- 25 июн 2013
- Сообщения:
- 825
- Симпатии:
- 89
- Баллы:
- 54
Да только надеюсь это скопированная роль и переименованная иначе у всех пользователей у кого назначена данная роль будет применено данное правило… Ну и надеюсь правило про архивную копию вы соблюдаете
-
работает спасибо!
а насчет «архивную копию» какой архив нужен?— Объединение сообщений, 22 окт 2014 —
и еще как дать доступ смог создать и записать но после сохранение не смог изменить только наименование?
Последнее редактирование: 22 окт 2014 -
Offline
ТехБухПривет
Профессионал в 1С
Команда форума- Регистрация:
- 25 июн 2013
- Сообщения:
- 825
- Симпатии:
- 89
- Баллы:
- 54
всегда пожалуйста(плюсик лучшая награда)
Знаете старый добрый боян: Администраторы БД делятся на две категории: те кто ещё не делает копию и кто теперь делает копию…))) -
Скажите пожалуйста как дать доступ смог создать и записать но после сохранение не смог изменить только наименование?
-
Offline
ТехБухПривет
Профессионал в 1С
Команда форума- Регистрация:
- 25 июн 2013
- Сообщения:
- 825
- Симпатии:
- 89
- Баллы:
- 54
хм)) какой вопрос такой ответ: Редактирование…
-
как уберу галку с Редактирование то пользователь при создание не может Редактировать! Как быть?
-
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
программно прописать, что если роль такая то и элемент записан, то запрет на редактирование )))
-
пример покажите пожалуйста
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Вот вам пример на коленке:
Если РольДоступна("ВашаРоль") И ЭтотОбъект.Записан() Тогда НужныйЭлемент.Доступность = ЛОЖЬ; КонецЕсли;
-
В реквизите Наименование недоступен Ограничение прав доступа на Редактирование,
где нужно записать этот код? -
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
ну можно приоткрытии формы элемента сразу определиться с доступностью полей
-
Offline
ТехБухПривет
Профессионал в 1С
Команда форума- Регистрация:
- 25 июн 2013
- Сообщения:
- 825
- Симпатии:
- 89
- Баллы:
- 54
Предвидя вопрос отвечаю)):
Появится код формы при открытии — сделаете проверку
-
вот код
&НаКлиенте Процедура ПриОткрытии(Отказ) Если РольДоступна("Роль1") И ЭтотОбъект.Записан() Тогда НужныйЭлемент.Доступность = ЛОЖЬ; КонецЕсли; КонецПроцедуры
проверил и ошибки
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,30)}: Переменная не определена (ЭтотОбъект) Если РольДоступна("Роль1") И <<?>>ЭтотОбъект.Записан() Тогда (Проверка: Тонкий клиент) {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6,1)}: Переменная не определена (НужныйЭлемент) <<?>>НужныйЭлемент.Доступность = ЛОЖЬ; (Проверка: Тонкий клиент) {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,6)}: Процедура или функция с указанным именем не определена (РольДоступна) Если <<?>>РольДоступна("Роль1") И ЭтотОбъект.Записан() Тогда (Проверка: Тонкий клиент)
-
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
ЭтотОбъект вроде для толстого клиента? для УФ наверное просто ОБъект
— Объединение сообщений, 24 окт 2014 —
ну и чтож вы как маленький, реквизиты то свои надо подпихивать.. вам же код для примера дали — адаптируйте под свои названия и нужды
Создали новый вид цены в программе 1с: Управление Торговлей 11.4. Теперь его нужно изменить, но поля неактивны и нельзя что-либо поменять.
Данное ограничение связано с Подсистемой «Запрет редактирования реквизитов объектов», которая запрещает изменять некоторые реквизиты объектов, которые являются ключевыми и оказывают влияние на поведение других объектов. Данная
Если Вы уверены, что изменение реквизитов не повлечет за собой негативных последствий и объект еще не используется, то можно разблокировать реквизиты для редактирования.
В данном случае Вид цены был только создан и нигде не используется.
Проверяем доступна ли команда “Разрешить редактирование реквизитов “:
Если Пользователи.РолиДоступны(«РедактированиеРеквизитовОбъектов») И ПравоДоступа(«Редактирование», Ссылка.Метаданные()) И НЕ ВсеРеквизитыБезПраваРедактирования Тогда // Добавление команды Команда = Форма.Команды.Добавить(«РазрешитьРедактированиеРеквизитовОбъекта»); |
Если нет, то добавляем роль “РедактированиеРеквизитовОбъектов” и возможность редактирования данного объекта.
Появляется предупреждение о разблокировании реквизитов и необходимости проверить использование объекта. Если объект используется, то не рекомендуется разблокировать реквизиты и нужно нажать кнопку “Закрыть”.
Если же нажата кнопка “Разрешить редактирование”, то реквизиты на форме станут доступны для изменения:
Внимание!!! Разблокирование реквизитов для редактирования Вы делаете на свой страх и риск.