Создали новый вид цены в программе 1с: Управление Торговлей 11.4. Теперь его нужно изменить, но поля неактивны и нельзя что-либо поменять.
Данное ограничение связано с Подсистемой «Запрет редактирования реквизитов объектов», которая запрещает изменять некоторые реквизиты объектов, которые являются ключевыми и оказывают влияние на поведение других объектов. Данная
Если Вы уверены, что изменение реквизитов не повлечет за собой негативных последствий и объект еще не используется, то можно разблокировать реквизиты для редактирования.
В данном случае Вид цены был только создан и нигде не используется.
Проверяем доступна ли команда “Разрешить редактирование реквизитов “:
Если Пользователи.РолиДоступны(«РедактированиеРеквизитовОбъектов») И ПравоДоступа(«Редактирование», Ссылка.Метаданные()) И НЕ ВсеРеквизитыБезПраваРедактирования Тогда // Добавление команды Команда = Форма.Команды.Добавить(«РазрешитьРедактированиеРеквизитовОбъекта»); |
Если нет, то добавляем роль “РедактированиеРеквизитовОбъектов” и возможность редактирования данного объекта.
Появляется предупреждение о разблокировании реквизитов и необходимости проверить использование объекта. Если объект используется, то не рекомендуется разблокировать реквизиты и нужно нажать кнопку “Закрыть”.
Если же нажата кнопка “Разрешить редактирование”, то реквизиты на форме станут доступны для изменения:
Внимание!!! Разблокирование реквизитов для редактирования Вы делаете на свой страх и риск.
Поделиться ссылкой:
Похожие записи
Ограничение на изменение реквизита документа на уровне ролей |
Я |
14.02.11 — 19:54
Создаю новую роль, в ней необходимо установить ограничение на редактирование документа — пользователь с этой ролью должен иметь право изменять в этом документе только один конкретный реквизит, для остальных реквизитов доступ только на чтение. Т.е. он может сохранить/провести документ только если не пытался изменить любой реквизит документа, кроме одного разрешенного.
В книге знаний статья этого не описывает.
1 — 14.02.11 — 19:59
(0) Может я и не прав… Но RLS, например, тебе не поможет. Поскольку он отрабатывает в момент чтения данных, т.е. при открытии. А тебе надо при записи документа — пилить и пилить.
2 — 14.02.11 — 20:05
В RLS есть право «Изменение», думаю можно наложить ограничение на него и запросом сравнить реквизиты до изменения и после, если все реквизиты, кроме указанного, остались без изменений то разрешить изменение иначе запретить, вот только как получить значения реквизитов до изменения и после изменения.
Да и топорный это способ.
3 — 14.02.11 — 20:30
(2) Ну, расскажи, как ты получишь «реквизиты до изменения и после» в запросе RLS.
4 — 14.02.11 — 21:13
О если б я знал как это сделать, в SQLPlus это сделать легко, а вот в запросе RLS… наверно надо дополнительный регистр с неким подобием версионирования — но это тот еще изврат… Наверно таки ПриЗаписи() или доступность на форме менять…
5 — 14.02.11 — 21:15
(4) Наверно таки ПередЗаписью()
6 — 14.02.11 — 21:16
(0) переходи на 8.2…
7 — 14.02.11 — 21:18
наверно таки ПриОткрытии
8 — 14.02.11 — 21:20
(7) Проверку ПриОткрытии(), или доступность реквизитов?
9 — 14.02.11 — 21:26
(8)проверку роли или права и управление доступностью реквизитов и поведением стандартных кнопок
(6)а там что, разьве легче?
10 — 14.02.11 — 21:29
(9) ну там как бы вплоть до реквизитов можно права устанавливать…
11 — 14.02.11 — 21:35
(10)тока на просмотр ведь, пишется-то все равно весь объект.
12 — 14.02.11 — 21:38
(11) «пользователь с этой ролью должен иметь право изменять в этом документе только один конкретный реквизит, для остальных реквизитов доступ только на чтение»
я как-то неправильно понял эту фразу из сабжа?
13 — 14.02.11 — 21:44
Все реквизиты документа из однго месте? А если наложить запрет на регистр, в котором хранятся этот самый реквизит, например?
14 — 14.02.11 — 21:46
Эх, почему наши доблестные молодые коллеги любят решать всё шашкой, на козе, в валенках, по уши в г…не?
Какую роль вы создаете? Для одного реквизита? А для другого другую роль? Вы случайно не функцию согласования или утверждения реализуете?
Пилите БП и задачи пользователя. На Задачу делайте форму — пусть правит реквизит, и толкает процесс дальше.
Господи, ну когда они наконец-то изучат 1С?
15 — 14.02.11 — 21:49
На краяйняк, добавьте этот реквизит в форме, как переменную нужного типа. И перед закрытием пишите в свой объект.
16 — 14.02.11 — 21:55
господи, сколько же болтунов на мисте
17 — 14.02.11 — 23:39
(14) Нет, не функция согласования и нет, роль не на один реквизит, и еще раз нет — тут БП городить нецелесообразно.
Роль существенно ограничивает права, по сути для большинства объектов доступ только на чтение, но есть документ в котором необходимо менять статус, при этом надо исключить возможность умышленного/неумышленного изменения других реквизитов. Да, я думаю было бы удобно (и логично) реализовать это ограничениями RLS, но так как RLS не позволяет это сделать без костылей, то останавливаюсь на изменении доступности полей.
18 — 15.02.11 — 01:38
Если РольДоступна(Метаданные.Роли.НужныеПрава) Тогда
Для каждого тек из ЭлементыФормы Цикл
Если (ТипЗнч(тек)= Тип(«ПолеВвода»)) Тогда
тек.ТолькоПросмотр = Истина;
КонецЕсли;
Если (ТипЗнч(тек)= Тип(«Флажок»))или(ТипЗнч(тек)= Тип(«ТабличноеПоле»)) Тогда
тек.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
ЭлементыФормы.НужныйРеквизит.ТолькоПросмотр = Ложь;
КонецЕсли;
19 — 15.02.11 — 10:17
(18) Спасибо, примерно так и думал.
20 — 15.02.11 — 10:27
(18) Как я понял это только на форме ограничение…
Остается дырка программного изменения, так же обработка группового изменения (Геморно, но если «вредителю» нужно, он это сделает)…
drdroid
21 — 15.02.11 — 12:38
(19) Это уже через RLS закрою возможность открытия внешних обработок/отчетов и некоторых внутренних.
В 1С можно настроить ограничения по ролям, т.е. запретить пользователям с определенной ролью изменять какие либо реквизиты или объекты конфигурации. Например, при создание или открытии какого либо документа (справочника) можно запретить изменять номер, дату или другие необходимые элементы. На практики подобные задачи встречаются довольно часто, так как некоторые пользователи могут поменять дату документ или его номер, тем самым нарушить учет документооборота. Реализовать все это достаточно просто.
Программное ограничения по ролям в 1С
Допустить у нас в базе есть роль «Пользователь» и нам необходимо всем учетным записям с данной ролью запретить изменять номер и дату документа поступления, а так же указывать в поле «Ответственный» наименование роли.
Для этого в обработчике события «При создании на сервере» пишем вот такой код.
Если РольДоступна("Пользователь") Тогда
Элементы.Номер.РедактированиеТекста = Ложь;
Элементы.Дата.РедактированиеТекста = Ложь;
Объект.Отвественный = Справочники.Пользователи.НайтиПоКоду("000000002");
Сообщить("У Вас не хватает прав для редактирования реквизитов документа!!!");
КонецЕсли;
Думаю в нем все понять, если учетная запись под которой создается документ имеет роль «Пользователь» тогда запрещаем редактировать «Номер», «Дату» и в поле «Ответственный» подставляем значение из справочника «Пользователи» которое найдем по коду. Под данным кодом в справочнике находиться «Пользователь».
Запустим 1С и посмотрим что получилось, в итоге ввести что-то с клавиатуры в поля «Номер», «Дата» не получиться.
Но если у данного поля есть возможность выбора, например, как у даты то изменить её все же буде возможно.
Для того чтобы исключить подобную ситуацию можно отключить доступность, без ограничения редактирования.
Элементы.Дата.Доступность = Ложь;
Элементы.Номер.Доступность = Ложь;
Элементы.Отвественный.Доступность = Ложь;
В этом случае пользователь уже ни чего не сможет сделать.
Вариантов реализации подобных задач очень много, я показал один из, возможно он даже не самый оптимальной. Если Вы знаете другой обязательно поделитесь!!!
Кстати механизм подставления «Ответственного» тут не совсем корректен, так как в базе может быть много пользователей 10, 20 и если у всех у них есть роль «Пользователь» то она и будет подставляться, тут необходимо подставлять имя пользователя а не роли, с помощью ПользователиИнформационнойБазы.ТекущийПользователь() но об этом в следующей статье.
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>сейчас попробую на ПолныхПравах
В этой статье разберем роли 1С. При конфигурировании какого-либо прикладного решения часто возникают задачи разграничения прав пользователей. Например, у каких-то пользователей могут быть права на создание, проведение и удаление документов «Поступление товаров» и «Реализация товаров», а у каких-то нет. Такое разграничение прав в конфигурациях 1С 8.3 выполняется при помощи ролей.
Роль это объект конфигурации, при помощи которого реализуется политика доступа пользователям к тем или иным объектам метаданных. Роли является общими объектами, которые создаются на этапе разработки. В конфигураторе 1С работа с ролями осуществляется посредствам ветки Роли в группе Общие дерева конфигурации.
Как добавить роли в 1С
Для того, чтобы добавить роль в конфигурацию, необходимо выделить ветку Роли, вызвать правой клавишей мышки контекстное меню, и выполнить команду «Добавить».
После выполнения команды, роль будет создана, а также появится конструктор этой роли и палитра свойств.
Если Вы создаете первую роль, то это должна быть роль с полными правами. Назвать её можно как угодно, обычно её так и называют ПолныеПрава, а чтобы установить права на все объекты конфигурации, необходимо воспользоваться командой «Установить все права» меню «Действия».
После выполнения этой команды у всех прав всех объектов роли установятся флаги.
Также у роли с полными правами рекомендуется установить флаги «Установить права для новых объектов» и «Установить права для реквизитов и табличных частей по умолчанию».
Флаг «Установить права для новых объектов» — отвечает за то, что новому объекту 1С у этой роли будут автоматически установлены все права.
Флаг «Установить права для реквизитов и табличных частей по умолчанию» — отвечает за то, что всем новым реквизитам и табличным частям объектов 1С у этой роли будут автоматически ставиться все права.
После того, как была создана роль с полными правами, можно создать практически неограниченное количество ролей с разным набором прав для объектов.
Например, создадим роль БазоваяРоль, у которой будут права только на просмотр объектов.
Права роли 1С
У каждой роли может быть определенный набор установленных прав. С помощью прав можно определить, что пользователь, обладающий той или иной ролью, может сделать с тем или иным объектом. А также, какие в целом действия он может совершать с конфигурацией.
Работа с правами роли в конфигураторе 1С осуществляется посредством конструктора роли.
Есть права в целом на конфигурацию, они устанавливаются, когда выделен корень дерева конфигурации в окне Объекты конструктора роли. Перечень этих прав определен разработчиками платформы 1С.
Точно также, для каждого объекта конфигурации разработчиками платформы 1С определен свой набор прав. Его состав зависит от прототипа объекта (к примеру, для документов и справочников разный набор прав).
У роли, для каждого объекта конфигурации можно включить или выключить какое-либо право на объект. Работа с составом прав объекта осуществляется посредством конструктора роли. Нужный объект выделяется в окне Объекты, а в окне Права отображается перечень прав для этого объекта. Как уже говорилось, этот перечень определен разработчиками платформы 1С, и менять его нельзя. Но, можно установить обладает ли роль каким-либо правом на этот объект, поставив флаг рядом с названием права. Если флаг у права стоит, значить у этой роли включено право на этот объект.
Например:
Это значит, что у роли БазоваяРоль для справочника Номенклатура включены права на просмотр и чтение этого справочника. Т.е. пользователь с этой роль может видеть элементы справочника, но не имеет прав на добавление, изменение и удаление элементов справочника Номенклатура.
В конструкторе роли можно установить права в целом на прототип. Например, можно установить права сразу на все документы.
Для этого, необходимо в окне Объекты выделить ветку дерева метаданных, которая соответствует нужному прототипу, в окне Права отобразится сгруппированный набор прав для всех объектов этой ветки.
На картинке выше набор прав для всех документов одинаков.
Если же отдельному документу установить какой-то набор прав, отличный от других документов. Например, установим документу ПродажаТоваров права на изменение и редактирование.
То в общем списке прав для всех документов, флажки у этих прав станут серыми.
Причем, если мы в этом списке для всех объектов прототипа снимем (или установим) определенное право, то у всех объектов ветки прототипа это право будет снято (или установлено).
Замечу, что можно установить права на конкретный реквизит объекта.
Это значит, что хоть пользователь в целом и сможет редактировать весь объект, то на изменение значения этого конкретного реквизита у пользователя не будет прав.
Также, права могут устанавливаться на подчиненные объекту команды.
Для того, чтобы назначить роль пользователю, необходимо в конфигураторе 1С открыть список пользователей: Главное меню – Администрирование – Пользователи.
В этом списке можно создать пользователя.
Роли пользователю задаются на закладке «Прочие».
Хоть один пользователь в базе данных должен быть с полными правами!
На закладе «Прочие» пользователю можно устанавливать несколько ролей.
Например, создадим роль ДобавлениеИзменениеДокументаЗакупкаТоваров, обладатель которой будет иметь почти полные правами на документ «Закупка товаров».
Но, у этой роли не будет прав ни на какие другие объекты, даже на просмотр.
У нас уже имеется созданная ранее роль БазоваяРоль, обладатель которой имеет права на просмотр объектов. Если мы какому-то пользователю назначим роль БазоваяРоль и роль ДобавлениеИзменениеДокументаЗакупкаТоваров, то этот пользователь будет иметь права на просмотр всех объектов, а также права на добавление/изменение документа «Закупка товара».
Следующие статьи:
Права пользователей 1С
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.
Разрешение пользователям редактировать отдельные реквизиты документа без перепроведения или просто одни реквизиты разрешать, а другие запрещать.
Иногда необходимо разрешить редактирование некоторых реквизитов документа без перепроведения. Например: Комментарий, АдресКонтрагента, КонтактноеЛицо. Ещё бывает необходимым разрешить изменение отдельных реквизитов в закрытых документах. Например, поставить отметку о состоянии доставки и написать комментарий.
В модуле менеджера документа пишем функцию, которая определяет массив допустимых к редактированию реквизитов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Возвращает массив имён реквизитов, разрешённых для изменнения без перепроведения. // Если получен параметр типа Массив, то имена реквизитов добавляются в него Функция ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(МассивРеквизитовДопустимыхКИзменению = Неопределено) Экспорт Если Не ТипЗнч(МассивРеквизитовДопустимыхКИзменению) = Тип(«Массив») Тогда МассивРеквизитовДопустимыхКИзменению = Новый Массив; КонецЕсли; //Типовые реквизиты МассивРеквизитовДопустимыхКИзменению.Добавить(«Грузополучатель»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьДата»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьНомер»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьВыдана»); МассивРеквизитовДопустимыхКИзменению.Добавить(«ДоверенностьЧерезКого»); МассивРеквизитовДопустимыхКИзменению.Добавить(«Комментарий»); МассивРеквизитовДопустимыхКИзменению.Добавить(«АдресДоставки»); //Добавленные реквизиты Возврат МассивРеквизитовДопустимыхКИзменению; КонецФункции |
В модуле ОбщегоНазначения пишем функции общие для всех документов.
// сравниваем реквизиты документа из базы данных с записываемым объектом // имена изменённых реквизитов запихываем в массив Функция ПолучитьСписокИзменённыхРеквизитов(ДокОбъект) Экспорт СписокИзменённыхРеквизитов = Новый Массив; Ссылка = ДокОбъект.Ссылка; мдОбъекта = ДокОбъект.Метаданные(); // сравниваем стандартные реквизиты Для Каждого Реквизит из мдОбъекта.СтандартныеРеквизиты Цикл Если ДокОбъект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда СписокИзменённыхРеквизитов.Добавить(Реквизит.Имя); КонецЕсли; КонецЦикла; |
В модуле документа ПредЗаписью разрешаем запись без пререпроведения в случае, если были изменены только реквизиты, не вызывающие перепроведение.
РедактированиеЗаднимЧислом = Ложь; МассивРеквизитовДопустимыхКИзменению = Документы.РеализацияТоваровУслуг.ПолучитьМассивРеквизитовИзменяемыхБезПерепроведения(); СписокИзменённыхРеквизитов = ОбщегоНазначения.ПолучитьСписокИзменённыхРеквизитов(ЭтотОбъект); СписокИзменённыхРеквизитовВызывающихПерепроведение = ОбщегоНазначения.МожноЗаписыватьБезПерепроведения(ЭтотОбъект, МассивРеквизитовДопустимыхКИзменению, СписокИзменённыхРеквизитов); Если СписокИзменённыхРеквизитовВызывающихПерепроведение = «» И Проведен И СписокИзменённыхРеквизитов.Количество() > 0 Тогда РежимЗаписи = РежимЗаписиДокумента.Запись; ИначеЕсли НЕ РедактированиеЗаднимЧислом и Дата < НачалоДня(ТекущаяДата()) И Не РольДоступна(«ПравоАдминистрирования») Тогда Сообщить(«Недостаточно прав для проведения реализации « + Номер + » « + Строка(Дата) + » задним числом. Изменены реквизиты: « + СписокИзменённыхРеквизитовВызывающихПерепроведение); Отказ = Истина; КонецЕсли; |
Оцените статью:
Загрузка…
Если Вы заметили ошибку, то выделите ее мышью и нажмите Ctrl+Enter