Показывать только "свои" записи....

Есть записи в разделе, в них есть поле Исполнитель, в нем сотрудник из справочника контактов...
Есть начальники отделов.
Надо чтобы сотрудники видели только "свои" записи, то есть где они в Исполнителях, начальники все записи отдела...
Как тут быть с правами и как и их проставлять? Есть у меня подозрения что это надо делать скриптом...
Задача стандартная, но на форуме что то ничего не ищется.....

Нравится

8 комментариев

Думаю вам надо создать группы на каждого пользователя (точно не знаю можно ли динамические создать, не знаю может ли обычный пользователь менять ее фильтры) и там раздать права как надо, а соответственно группе "Все пользователи" убрать права.
Изменение прав - правая кнопка мыши по группе -> Права доступа

Группы пользователей или группы в дереве групп на панели слева?

На панели слева

Не, фигня какая то получается....
По моему надо права на записи раздавать....

может быть связано с администрированием по записям в самой таблице.

именно, только не то что вы обвели, а пункт выше: Is Administrated Bу Records.
короче, я понял, что при создании записи надо будет прописывать права на нее скриптом исходя из структуры компании.......

кстати, я включил этот пункт, но таблицы и представления, обещанные в статье Принципы реализации прав доступа платформы Terrasoft у меня не создались ни разу....

"Шамуилов Александр" написал:Не, фигня какая то получается....
По моему надо права на записи раздавать....

можно настроить права доступа по умолчанию -- т.е. права, какие будут раздаваться записи при ее создании. например, создать группу "руководство" -- и в ней для этой таблицы проставить нужные права. Тогда при сохранении новой записи автоматически будут раздаваться права тому, кто ее создал и пользователям из группы "Руководство".

это один из способов, "попроще".
другой способ, как раз из серии

"Шамуилов Александр" написал:это надо делать скриптом...

в скрипте scr_Access есть функция GiveRightsToRecordOwner(Dataset) -- она раздает полные права доступа ответственному по записи.
и есть функция ProcessGiveRecordRightsToContact(Dataset, OwnerID, CanRead, CanWrite, CanDelete, CanChangeAccess) -- как раз она раздает права доступа нужному контакту.

в Вашем случае, нужно раздать полные права руководителю исполнителя, верно?
т.е. на АфтерПост записи нужно прописать примерно так:

var DirectorID = GetDatasetFieldValueByID('ds_Contact', Dataset('ManagerID'), 'DirectorID'); //берем ИД руководителя. тут ManagerID -- поле исполнителя в текущей записи,  DirectorID -- поле с ИД руководителя для этого исполнителя (либо же руководитель -- это ответсвенный, тогда нужно написать OwnerID)
ProcessGiveRecordRightsToContact(Dataset, DirectorID , 1, 1, 1, 1);

тут Dataset -- это датасет текущей записи

Первый способ не проходит, отделов несколько, таблица одна на всех, а второй вот как раз точно в тему.
Завтра попробую, грит сенькс, как говорится :biggrin:

Показать все комментарии