Есть записи в разделе, в них есть поле Исполнитель, в нем сотрудник из справочника контактов...
Есть начальники отделов.
Надо чтобы сотрудники видели только "свои" записи, то есть где они в Исполнителях, начальники все записи отдела...
Как тут быть с правами и как и их проставлять? Есть у меня подозрения что это надо делать скриптом...
Задача стандартная, но на форуме что то ничего не ищется.....
Нравится
Думаю вам надо создать группы на каждого пользователя (точно не знаю можно ли динамические создать, не знаю может ли обычный пользователь менять ее фильтры) и там раздать права как надо, а соответственно группе "Все пользователи" убрать права.
Изменение прав - правая кнопка мыши по группе -> Права доступа
Группы пользователей или группы в дереве групп на панели слева?
Не, фигня какая то получается....
По моему надо права на записи раздавать....
именно, только не то что вы обвели, а пункт выше: 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: