Настройка доступа к контрагентам для УТ упрощенная


Позволяет настроить права доступа к папкам или элементам справочника "Контрагенты" в одной удобной форме. Само разграничение прав - штатным механизмом, реализованным в типовой УТ.

ВАЖНО! Для того, чтобы штатный механизм ограничений доступа к контрагентам работал, надо поставить галочку в константах "Ограничение прав доступа на уровне записей".

Что именно делает обработка. Алгоритм следующий:

  1. При открытии обработка в правом окне формирует список пользователей, у которых отсутствуют полные права на базу (потому что тем, у кого полные права назначение разрешений не требуется). Список сортируется по имени пользователя и менять порядок и состав строк запрещено, дальше будет понятно почему...

  2. По тем пользователям, у которых проставите галочки, будет создана строка вида: Имя1;Имя2;Имя3 ... и т.д. Если в имени пользователя несколько слов, то берется первое. По этой строке ищется группа доступа к контрагентам, по совпадению наименования. Если такой нет - создается новая.

  3. Минус в том, что в типовой конфигурации длина наименования у этого справочника всего 25 символов, и наша строка может получиться больше. В таком случае программа проверит, если наша строка больше, то создается новая группа, с названием Имя1;Имя2;Им... Вообще по опыту редко случается необходимость назначить права к контрагенту больше чем двум, максимум трем пользователям одновременно, поэтому если увеличить длину наименования справочника до 150 этого за глаза должно хватить.

  4. Для каждого пользователя из отмеченных галочками ищется "группа пользователей", в которую он входит. По приоритету берется группа в которой он один в качестве участников, ну а если такой нет, то по увеличению кол-ва членов группы. Например, если нужно начальнику отдела дать права на контрагентов какого-то менеджера, то достаточно начальника добавить в группу которая привязана к этому менеджеру. Если найденных групп с текущим пользователем вообще не найдено, то она создается.

  5. Дальше пишутся настройки в регистры "НазначениеВидовОбъектовДоступа" и "НастройкиПравДоступаПользователей", с видом доступа "Контрагенты" и найденными/созданными группами "доступа" и "пользователей". Права на запись элементов разрешается.

  6. После всего этого обработка присваивает группу доступа контрагентам из левого списка.

Следует заметить, что если у вас был назначен доступ Менеджеру1 на какую-то папку или контрагента, и вы хотите дать разрешение на этого контрагента/папку Менеджеру2, то в обработке надо поставить галочки на ОБОИХ этих пользователей. Иначе будет создана новая группа доступа, она запишется в контрагента и Менеджер1 уже не увидит этого контрагента. Т.е. в правом окне надо ВСЕГДА проставлять ВСЕХ пользователей которые должны видеть контрагентов, указанных слева.

Код открыт, тестировалась на версиях УТ с 10.3.5.1 по 10.3.14.5.

На всякий случай добавил галочку "Всегда создавать новую группу доступа", это для тех у кого имена пользователей в базе содержат пробелы, например ФИО написано полностью. Т.к. берется первое слово из имени пользователя, то возможны "перехлесты" прав, например 2 человека с фамилией "Иванов" и им надо выдать разные права, если галочку не поставить, то программа найдет группу доступа 1-го и даст второму права на нее.

Вообще имена в базе лучше хранить в виде "ФамилияИО" без пробелов, а в полном наименовании писать что хочется, тогда проблемы с совпадениями будут крайне редко.

Файлы обработки:

-