ВАЖНО! Для того, чтобы штатный механизм ограничений доступа к контрагентам работал, надо поставить галочку в константах «Ограничение прав доступа на уровне записей».
Что именно делает обработка. Алгоритм следующий:
-
При открытии обработка в правом окне формирует список пользователей, у которых отсутствуют полные права на базу (потому что тем, у кого полные права назначение разрешений не требуется). Список сортируется по имени пользователя и менять порядок и состав строк запрещено, дальше будет понятно почему…
-
По тем пользователям, у которых проставите галочки, будет создана строка вида: Имя1;Имя2;Имя3 … и т.д. Если в имени пользователя несколько слов, то берется первое. По этой строке ищется группа доступа к контрагентам, по совпадению наименования. Если такой нет — создается новая.
-
Для каждого пользователя из отмеченных галочками ищется «группа пользователей», в которую он входит. По приоритету берется группа в которой он один в качестве участников, ну а если такой нет, то по увеличению кол-ва членов группы. Например, если нужно начальнику отдела дать права на контрагентов какого-то менеджера, то достаточно начальника добавить в группу которая привязана к этому менеджеру. Если найденных групп с текущим пользователем вообще не найдено, то она создается.
-
Дальше пишутся настройки в регистры «НазначениеВидовОбъектовДоступа» и «НастройкиПравДоступаПользователей», с видом доступа «Контрагенты» и найденными/созданными группами «доступа» и «пользователей». Права на запись элементов разрешается.
-
После всего этого обработка присваивает группу доступа контрагентам из левого списка.
Минус в том, что в типовой конфигурации длина наименования у этого справочника всего 25 символов, и наша строка может получиться больше. В таком случае программа проверит, если наша строка больше, то создается новая группа, с названием Имя1;Имя2;Им… Вообще по опыту редко случается необходимость назначить права к контрагенту больше чем двум, максимум трем пользователям одновременно, поэтому если увеличить длину наименования справочника до 150 этого за глаза должно хватить.
Следует заметить, что если у вас был назначен доступ Менеджеру1 на какую-то папку или контрагента, и вы хотите дать разрешение на этого контрагента/папку Менеджеру2, то в обработке надо поставить галочки на ОБОИХ этих пользователей. Иначе будет создана новая группа доступа, она запишется в контрагента и Менеджер1 уже не увидит этого контрагента. Т.е. в правом окне надо ВСЕГДА проставлять ВСЕХ пользователей которые должны видеть контрагентов, указанных слева.
Код открыт, тестировалась на версиях УТ с 10.3.5.1 по 10.3.14.5.
На всякий случай добавил галочку «Всегда создавать новую группу доступа», это для тех у кого имена пользователей в базе содержат пробелы, например ФИО написано полностью. Т.к. берется первое слово из имени пользователя, то возможны «перехлесты» прав, например 2 человека с фамилией «Иванов» и им надо выдать разные права, если галочку не поставить, то программа найдет группу доступа 1-го и даст второму права на нее.
Вообще имена в базе лучше хранить в виде «ФамилияИО» без пробелов, а в полном наименовании писать что хочется, тогда проблемы с совпадениями будут крайне редко.
Идея обработки хорошая — там черт ногу сломит с настройкой прав доступа, и справка не сильно помогает.
Но стоило бы подробнее расписать, что именно делает ваша обработка. В таблице Контрагенты указываются записи, к которым будет доступ у отмеченных пользователей из правой таблицы? Какие именно записи в регистрах прав досутпа при этом формируются?
Ни и проверить бы на последнем релизе не помешало.
было бы здоророво если б описано подробно было, весь механизм настройки прав для УТ
Да вроде и так уж как мог подробно расписал. Что именно интересует?
Вся настройка прав заключается в регистрах «НазначениеВидовОбъектовДоступа» и «НастройкиПравДоступаПользователей». В первом связь между группой пользователя и видом доступа (к Контрагентам или к Организациям), во втором связь: группа пользователей — группа доступа к контрагентам. Группа доступа к контрагенту указывается для каждого контрагента в форме элемента справочника.
Если есть предложения по усовершенствованию обработки, предлагайте, рассмотрим.
Хорошая обработка, но можно, напритмер добавить кнопку заполнить по менеджеру, чтобы не через подбор набирать контрагентов.
Но я это на CRM тестировал, может просто подбор криво работает из-за отличий.
Ну и не понял почему группы доступа контрагентов берут только первое слово.
При настройке доступа по менеджерам, чтобы каждый видел только своих, а не по группам менеджеров проще сделать название группы доступа к контрагенту точно по имени пользователя.
Себе я это допилил, сейчас пойду клиенту настраивать доступы.
Первое слово брал, потому что в типовой конфигурации длина наименования у справочника «Группы доступа к контрагентам» всего 25 символов, и к тому же могут быть случаи, когда контрагенту надо назначить 2-3 пользователей, которые его должны видеть. Для таких целей наименования может не хватить.
В идеале вообще бы справочнику «Группы доступа» прикрутить табличную часть, как это сделано у «групп пользователей» и искать по полному соответствию проставленным галочкам в обработке, но это надо в конфигурацию внедрятся.