Регистрация  |  Вход

Sharing Record

Доброго дня.
Задача такая:
Есть запись у кастомного объекта. Юзер "A" её создал и может что угодно сделать.
Есть юзер "B" у которого профили настроены так, что он ее видеть не может.
Задача, сделать так что бы он мог ее увидеть и изменить.
Знаю что можно заюзать вот это.
Но вот не совсем понимаю как это сделать на деле(
По сути надо зинсертить SharingRecord, в которой будет указано что данный юзер может ее редактировать.
А вот как правильно это сделать,я не совсем догоняю.

Доброго дня. 
Задача такая:
Есть запись у кастомного объекта. Юзер "A" её создал и может что угодно сделать.
Есть юзер "B" у которого профили настроены так, что он ее видеть не может.
Задача, сделать так что бы он мог ее увидеть и изменить.
Знаю что можно заюзать [url=http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_bulk_sharing_creating_with_apex.htm]вот это[/url]. 
Но вот не совсем понимаю как это сделать на деле(
По сути надо зинсертить SharingRecord, в которой будет указано что данный юзер может ее редактировать.
А вот как правильно это сделать,я не совсем догоняю.

Виктор Сенько
Есть юзер "B" у которого профили настроены так, что он ее видеть не может.

может мне кажется, но твоя проблема решается проще.

Видимость записей (а не их полей) определяется:
(1) OWD - организайшн-вайд дефолт - тут как понимаю объект Приватный.
(2) Ролями пользователя - вертикальная видимость - если включена
(4) Шеринг рулсами которые определяет ЛОгику видимости и к какой категории юзеров (по роли, группе, индивидуально)эта логиика применяется (если у записи рек тайп "Восток" - то видят все кто в роли "сотрудники Восток").

есть еще более тонкие настройки, в том числе какие новые настройки Персонал шеринг (что-то вроде того).

на некоторых стандартных объектая есть спец кнопки связынные с шерингом - они описывают типичные ситуации шеринга.

ВОзможно тебе просто нужно настроить Роли и шеринг рулсы? об этом есть и Верхаус и в Рекрутинг ворбуках, плюс тоже самое еще раз в Секюрити воркбкук.

[quote="Виктор Сенько"]Есть юзер "B" у которого профили настроены так, что он ее видеть не может. [/quote]

может мне кажется, но твоя проблема решается проще.

Видимость записей (а не их полей) определяется:
(1) OWD - организайшн-вайд дефолт - тут как понимаю объект Приватный.
(2) Ролями пользователя - вертикальная видимость - если включена
(4) Шеринг рулсами которые определяет ЛОгику видимости и к какой категории юзеров (по роли, группе, индивидуально)эта логиика применяется (если у записи рек тайп "Восток" - то видят все кто в роли "сотрудники Восток").

есть еще более тонкие настройки, в том числе какие новые настройки Персонал шеринг (что-то вроде того).

на некоторых стандартных объектая есть спец кнопки связынные с шерингом - они описывают типичные ситуации шеринга.

ВОзможно тебе просто нужно настроить Роли и шеринг рулсы? об этом есть и Верхаус и в Рекрутинг ворбуках, плюс тоже самое еще раз в Секюрити воркбкук.

Настройки шаринга и приватности не подойдут((
Надо заюзать именно это "таблицу шаринга". Что бы открыть доступ именно для этой записи, и только для нее.

Настройки шаринга и приватности не подойдут(( 
Надо заюзать именно это "таблицу шаринга". Что бы открыть доступ именно для этой записи, и только для нее. 

Опишу цепочку.
Есть Юзер A с ролью Role и профилем Profile
Есть Юзер B с ролью Role2 и профилем Profile2

Юзер А создает запись кастомного обьекта.
Юзер В должен видеть это запись, который создал Юзер A, но не должен видеть другие записи созданные юзерами с таким же ролью Role и профилем Profile.
Тоесть посути надо расшарить определённую запись на определённого юзера.

Опишу цепочку.
Есть Юзер A с ролью Role и профилем Profile
Есть Юзер B с ролью Role2 и профилем Profile2

Юзер А создает запись кастомного обьекта.
Юзер В должен видеть это запись, который создал Юзер A, но не должен видеть другие записи созданные юзерами с таким же ролью Role и профилем Profile.
Тоесть посути надо расшарить определённую запись на определённого юзера. 

:):):):):):):):):):):):):)
И опять отвечу сам себе) Все оказалось очень легко!!!

Coaching_Form__Share hiringManagerShare = new Coaching_Form__Share();
hiringManagerShare.ParentId = 'a0mc0000002L6cy'; // ИД записи
hiringManagerShare.UserOrGroupId = '005E0000000dlL3'; // ИД юзера
hiringManagerShare.AccessLevel = 'edit'; // Что он может для этой записи!
Database.insert(hiringManagerShare,false);

:):):):):):):):):):):):):)
И опять отвечу сам себе) Все оказалось очень легко!!!
[code]Coaching_Form__Share hiringManagerShare = new Coaching_Form__Share();
hiringManagerShare.ParentId = 'a0mc0000002L6cy'; // ИД записи
hiringManagerShare.UserOrGroupId = '005E0000000dlL3'; // ИД юзера
hiringManagerShare.AccessLevel = 'edit'; // Что он может для этой записи!
Database.insert(hiringManagerShare,false);[/code]

Виктор Сенько
Coaching_Form__Share hiringManagerShare = new Coaching_Form__Share();

ну это что-то новое для меня.

АйДи наверное лучше кверить по какомуто признаку (имя пользователя, название записи) - этот признак, по которому кверится, можно даже вынести в Кастом сеттинг если предполагается, что возможно изменения. Тогда код будет даже "гибчее".

PS: из условия примера выше мне показалось, что речь идет об единичном случае шеринга (поэтому я упомянул, что что АйДи лучшенужно кверить и прочее). Но наверное я ошибаюсь, наверное такой "програмный" шеринг делается для описание какой-то уникальной логики шеринга для всех вновь создаваемых записей, на которые эта логика распространияется.

Тогда такой код пойдет в тригер. Я правильно понял?

[quote="Виктор Сенько"]Coaching_Form__Share hiringManagerShare = new Coaching_Form__Share();[/quote]

ну это что-то новое для меня.

АйДи наверное лучше кверить по какомуто признаку (имя пользователя, название записи) - этот признак, по которому кверится, можно даже вынести в Кастом сеттинг если предполагается, что возможно изменения. Тогда код будет даже "гибчее".

PS: из условия примера выше мне показалось, что речь идет об единичном случае шеринга (поэтому я упомянул, что что АйДи лучшенужно кверить и прочее). Но наверное я ошибаюсь, наверное такой "програмный" шеринг делается для описание какой-то уникальной логики шеринга для всех вновь создаваемых записей, на которые эта логика распространияется.

Тогда такой код пойдет в тригер. Я правильно понял?

Очень распространенная задача:

решается с помощью sharing. Для объекта естественно должно стоять Private.
(отдельный вопрос роль не/подчиненная и шарится ли записать автоматом по иерархии ролей)

если запись не шарится по иерархии, то запись созданная A не будет видна B - чтобы расширить есть 3 пути:
1. кнопка Shanring на Standard layout
2. Sharing Rules
3. code sharing

первые 2 понятны, третий вот пример:

MyObject__Share MyObjectShare = new MyObject__Share ();
MyObjectShare.ParentId = <record.Id>;
MyObjectShare.UserOrGroupId = <user.Id>;
MyObjectShare.AccessLevel = <level>;
insert MyObjectShare;

где, <record.Id> id записи которую надо расшарить, <user.Id> - с кем надо расшарить, <level> - уровень доступа (read, edit).

Виктор Сенько
Есть юзер "B" у которого профили настроены так, что он ее видеть не может.

Как раз тут неправильно. B тоже должен видеть объект в профиле. Иначе смысла от sharing никакого не будет.

Очень распространенная задача:

решается с помощью sharing. Для объекта естественно должно стоять Private.
(отдельный вопрос роль не/подчиненная и шарится ли записать автоматом по иерархии ролей)

если запись не шарится по иерархии, то запись созданная A не будет видна B - чтобы расширить есть 3 пути:
1. кнопка Shanring на Standard layout
2. Sharing Rules
3. code sharing

первые 2 понятны, третий вот пример:
[code]
MyObject__Share MyObjectShare = new MyObject__Share ();
MyObjectShare.ParentId = <record.Id>;
MyObjectShare.UserOrGroupId = <user.Id>;
MyObjectShare.AccessLevel = <level>;
insert MyObjectShare;
[/code]
где, <record.Id> id записи которую надо расшарить, <user.Id> - с кем надо расшарить, <level> - уровень доступа (read, edit).

[quote="Виктор Сенько"]Есть юзер "B" у которого профили настроены так, что он ее видеть не может. [/quote]
Как раз тут неправильно. B тоже должен видеть объект в профиле. Иначе смысла от sharing никакого не будет.

Как раз тут неправильно. B тоже должен видеть объект в профиле. Иначе смысла от sharing никакого не будет.

Да, немного ошибся.
Тогда такой код пойдет в тригер. Я правильно понял?

Да именно туда и ушел)

[quote]Как раз тут неправильно. B тоже должен видеть объект в профиле. Иначе смысла от sharing никакого не будет.[/quote]
Да, немного ошибся.
[quote]Тогда такой код пойдет в тригер. Я правильно понял?[/quote]
Да именно туда и ушел)