Право на изменение только одного реквизита

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>сейчас попробую на ПолныхПравах

Право на изменение реквизита документа

Я
   Nanayka

06.07.06 — 15:47

Подскажите.

Есть документ.В нем есть какой-то реквизит (подразделение, например), к которому для данной роли (Роль1, например) необходимо закрыть доступ. При этом дав возможность редактировать другие реквизиты.

Возможно ли это в принципе, и если да , то

как это сделать, а конкретнее — что написать (какой запрос) в графах «поля» и «ограничение доступа» для данной роли.

  

Партнерская программа EFSOL Oblako

   ТелепатБот

1 — 06.07.06 — 15:47

   FERZ

2 — 06.07.06 — 15:49

Если Пользователь=Петров Тогда

Толькопросмотр

КонецЕсли

Суть такая

   FERZ

3 — 06.07.06 — 15:50

ПриОткрытии

   Nanay

4 — 06.07.06 — 15:52

(2)(3)

Имеется в виду не что написать в модулях формы, а именно в РОЛЯХ .

   FERZ

5 — 06.07.06 — 15:59

Тогда «Ограничение доступа к данным»

   Nanayka

6 — 06.07.06 — 16:04

(5) В том то и вопрос что написать в этих самых ограничениях

   FERZ

7 — 06.07.06 — 16:13

(6)Да что угодно!Выбрать реквизит и в условиях поставить что Дата<>Дата(1,1,1)

А почему в модуле не прописать?

   IronDemon

8 — 06.07.06 — 16:23

в ролях неполучится, только в модуле.

   Nanayka

9 — 06.07.06 — 16:28

То есть получается, что на отдельно взятый реквизит в Ролях ограничение доступа (чтение, добавление, изменение, удаление) налаживать нельзя ???

   ZolotarevAA

10 — 06.07.06 — 16:32

(9) Чем код-то неустраивает?

   Nanayka

11 — 06.07.06 — 16:33

(10) Какой код ???

   ZolotarevAA

12 — 06.07.06 — 16:34

(11) В модуле, наподобие (2).

   Nanayka

13 — 06.07.06 — 16:40

(12) Тем что хочется знать работает ли это на уровне Ролей

Цитата из 1С : http://v8.1c.ru/overview/PlRights.htm

Ограничение доступа к данным на уровне записей и полей

Для объектных таблиц и регистров сведений могут быть заданы разные ограничения для различных полей таблицы, что позволяет определять ограничения не только на уровне записей базы данных, но и на уровне отдельных ее полей:

Ограничение доступа к данным представляет собой условие, описанное на языке, который является подмножеством языка запросов. Это условие применяется для каждой записи таблицы базы данных, над которой выполняется операция. Если условие принимает значение «истина», то операция выполняется, а если нет, то не выполняется. При просмотре списков и формировании отчетов существует возможность обеспечить отображение  только тех данных, доступ к которым пользователю разрешен.

   IronDemon

14 — 06.07.06 — 16:45

(12) ограничивать в ролях можно только на чтение, на изменение — нет

   Nanayka

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С

Допустить у нас в базе есть роль «Пользователь» и нам необходимо всем учетным записям с данной ролью запретить изменять номер и дату документа поступления, а так же указывать в поле «Ответственный» наименование роли.

1C Ограничения по ролям

Для этого в обработчике события «При создании на сервере» пишем вот такой код.

Если РольДоступна("Пользователь") Тогда
     Элементы.Номер.РедактированиеТекста = Ложь;
     Элементы.Дата.РедактированиеТекста = Ложь;
     Объект.Отвественный = Справочники.Пользователи.НайтиПоКоду("000000002");
     Сообщить("У Вас не хватает прав для редактирования реквизитов документа!!!");
КонецЕсли;

Думаю в нем все понять, если учетная запись под которой создается документ имеет роль «Пользователь» тогда запрещаем редактировать «Номер», «Дату» и в поле «Ответственный» подставляем значение из справочника «Пользователи» которое найдем по коду. Под данным кодом в справочнике находиться «Пользователь».

1C Как ограничить доступ к некоторым реквизитам документа для определённой роли программно

Запустим 1С и посмотрим что получилось, в итоге ввести что-то с клавиатуры в поля «Номер», «Дата» не получиться.

1C Как ограничить доступ к некоторым реквизитам для определённой роли

Но если у данного поля есть возможность выбора, например, как у даты то изменить её все же буде возможно.

1C Как ограничить доступ к некоторым реквизитам для определённой роли программно

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

Элементы.Дата.Доступность = Ложь;
Элементы.Номер.Доступность = Ложь;
Элементы.Отвественный.Доступность = Ложь;
1C отключаем доступность

В этом случае пользователь уже ни чего не сможет сделать.

1С как отключить доступность по ролям

Вариантов реализации подобных задач очень много, я показал один из, возможно он даже не самый оптимальной. Если Вы знаете другой обязательно поделитесь!!!

Кстати механизм подставления «Ответственного» тут не совсем корректен, так как в базе может быть много пользователей 10, 20 и если у всех у них есть роль «Пользователь» то она и будет подставляться, тут необходимо подставлять имя пользователя а не роли, с помощью ПользователиИнформационнойБазы.ТекущийПользователь() но об этом в следующей статье.

Страница 1 из 2

  1. Добрый день!
    Скажите пожалуйста как можно дать доступ пользователю изменить определенному реквизиту справочника?
    Спасибо!


  2. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Правильно ли я понял менять Определённый реквизит у справочника, но остальное трогать право не имеет?
    Если так, то надо создавать отдельную роль(скопировать уже существующую для данного пользователя) и там прописывать данные ограничения.
    Но учтите база станет не типовой и придётся переносить при каждом обновлении + вносить изменение вводимые в типовую роль.
    Сначала задайтесь вопросом вы к этому готовы?

  3. Да правильно!
    Но конфиг рукописная


  4. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    ну если рукописная, то не вижу проблем)) выбираете необходимую роль F9 и препарируете правила доступа к необходимому справочнику со всем вниманием и усердием, а потом уже назначаете нужному пользователю(не путать роли в метаданных и роли назначаемые в администрировании пользователям — если разницу не видите — лучше не трогать)

  5. так?
    upload_2014-10-22_11-26-59.png


  6. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Да только надеюсь это скопированная роль и переименованная иначе у всех пользователей у кого назначена данная роль будет применено данное правило… Ну и надеюсь правило про архивную копию вы соблюдаете ;)

  7. работает спасибо!
    а насчет «архивную копию» какой архив нужен?

    — Объединение сообщений, 22 окт 2014

    и еще как дать доступ смог создать и записать но после сохранение не смог изменить только наименование?

    Последнее редактирование: 22 окт 2014

  8. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    всегда пожалуйста(плюсик лучшая награда;))
    Знаете старый добрый боян: Администраторы БД делятся на две категории: те кто ещё не делает копию и кто теперь делает копию…)))

  9. Скажите пожалуйста как дать доступ смог создать и записать но после сохранение не смог изменить только наименование?


  10. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    хм)) какой вопрос такой ответ: Редактирование…

  11. как уберу галку с Редактирование то пользователь при создание не может Редактировать! Как быть?
    upload_2014-10-22_14-40-37.png

    upload_2014-10-22_14-42-18.png


  12. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    программно прописать, что если роль такая то и элемент записан, то запрет на редактирование )))

  13. пример покажите пожалуйста


  14. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Вот вам пример на коленке:

    Если РольДоступна("ВашаРоль") И ЭтотОбъект.Записан() Тогда
    НужныйЭлемент.Доступность = ЛОЖЬ;
    КонецЕсли;
  15. В реквизите Наименование недоступен Ограничение прав доступа на Редактирование,
    где нужно записать этот код?


  16. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    ну можно приоткрытии формы элемента сразу определиться с доступностью полей


  17. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Предвидя вопрос отвечаю)):

    screenshot.2014-10-23.jpg

    Появится код формы при открытии — сделаете проверку

  18. вот код

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
       
    Если РольДоступна("Роль1") И ЭтотОбъект.Записан() Тогда
    НужныйЭлемент.Доступность = ЛОЖЬ;
    КонецЕсли;
       
    КонецПроцедуры
    

    проверил и ошибки

    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,30)}: Переменная не определена (ЭтотОбъект)
    Если РольДоступна("Роль1") И <<?>>ЭтотОбъект.Записан() Тогда (Проверка: Тонкий клиент)
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6,1)}: Переменная не определена (НужныйЭлемент)
    <<?>>НужныйЭлемент.Доступность = ЛОЖЬ; (Проверка: Тонкий клиент)
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,6)}: Процедура или функция с указанным именем не определена (РольДоступна)
    Если <<?>>РольДоступна("Роль1") И ЭтотОбъект.Записан() Тогда (Проверка: Тонкий клиент)
    

  19. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    ЭтотОбъект вроде для толстого клиента? для УФ наверное просто ОБъект

    — Объединение сообщений, 24 окт 2014

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

Страница 1 из 2


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Создали новый вид цены в программе 1с: Управление Торговлей 11.4. Теперь его нужно изменить, но  поля неактивны и нельзя что-либо поменять.

Не редактируются реквизиты Вида Цены Ут11

Данное ограничение связано с  Подсистемой «Запрет редактирования реквизитов объектов», которая запрещает изменять некоторые реквизиты объектов, которые являются ключевыми и оказывают влияние на поведение других объектов. Данная

Если Вы  уверены, что изменение реквизитов не повлечет за собой негативных последствий и объект еще не используется, то можно разблокировать реквизиты для редактирования.

В данном случае Вид цены был только создан и нигде не используется. 

Проверяем доступна ли команда “Разрешить редактирование реквизитов “:

Разрешить редактирование реквизитов

Если Пользователи.РолиДоступны(«РедактированиеРеквизитовОбъектов»)

   И ПравоДоступа(«Редактирование», Ссылка.Метаданные())

   И НЕ ВсеРеквизитыБезПраваРедактирования Тогда

// Добавление команды

Команда = Форма.Команды.Добавить(«РазрешитьРедактированиеРеквизитовОбъекта»);

Если нет, то добавляем роль “РедактированиеРеквизитовОбъектов” и возможность редактирования данного объекта.

Появляется предупреждение о разблокировании реквизитов и необходимости проверить использование объекта. Если объект используется, то не рекомендуется разблокировать реквизиты и нужно нажать кнопку “Закрыть”.

Разблокирование реквизитов

Если же нажата кнопка “Разрешить редактирование”, то реквизиты на форме станут доступны для изменения:

Редактирование формы Виды Цен 

Внимание!!! Разблокирование реквизитов для редактирования Вы делаете на свой страх и риск.

Поделиться ссылкой:

Похожие записи

Понравилась статья? Поделить с друзьями:
  • Почему компания меняет название каждый год
  • Почта россии на народной улице часы работы
  • Правовое обеспечение нефтегазового бизнеса
  • Почему лучше работать в маленькой компании
  • Правовой совет юридическая компания отзывы