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

Как на стандартном Create layout заблокировать редактирование Мастер-Дитейл лукапа?

Неожиданное пожелание от заказчика: в момент создания новой дочерней записи (с кнопки Создать запись на Рел Листе стандартного лейаута родителя) юзер может редактировать Мастер-Дитейл лукап, и сознательно или случайно переназначить родителя.

Как это избежать стандартными средствами?

сразу скажу, что Мастер-Дитейл лукап:
(1) невозможно сделать рид-онли в настройках стандартного лейаута
(2) невозможно удалить со стандартного лейаута (чтобы заменить формулой, например, чтобы юзер видел имя родителя)
(3)невозможно сделать рид-онли в настройках профайла
(4) Опция Reparenting в настройках самого МД поля не помогает с случае создания новой записи

есть еще идеи?
(то что можно запилить кастомную страницу для создания дочерней записи - это понятно:)

Неожиданное пожелание от заказчика: в момент создания новой дочерней записи (с кнопки Создать запись на Рел Листе стандартного лейаута родителя) юзер может редактировать Мастер-Дитейл лукап, и сознательно или случайно переназначить родителя.

Как это избежать стандартными средствами?

сразу скажу, что Мастер-Дитейл лукап:
(1) невозможно сделать рид-онли в настройках стандартного лейаута
(2) невозможно удалить со стандартного лейаута (чтобы заменить формулой, например, чтобы юзер видел имя родителя)
(3)невозможно сделать рид-онли в настройках профайла
(4) Опция Reparenting в настройках самого МД поля не помогает с случае создания новой записи

есть еще идеи? 
(то что можно запилить кастомную страницу для создания дочерней записи - это понятно:)

Добавить злую надпись (Help Text) к полю - мол "попробуй только изменить!!!"

Хотя наверное на редактировании не показывается help text

Добавить злую надпись (Help Text) к полю - мол "попробуй только изменить!!!"

Хотя наверное на редактировании не показывается help text

Первое, что в голову пришло для Classic:

Сделать кастомный New для чайлда, в URLFOR передавать в скрытый филд айди родителя,
на сейве через валидацию сравнить айдишки в настоящем филде и скрытом.

Первое, что в голову пришло для Classic:

Сделать кастомный New для чайлда, в URLFOR передавать в скрытый филд айди родителя, 
на сейве через валидацию сравнить айдишки в настоящем филде и скрытом.


Наверное все-таки проще в таком случае не городить костыли и просто сделать кастомную страницу.

Наверное все-таки проще в таком случае не городить костыли и просто сделать кастомную страницу.

Dmitry Shnyrev
Наверное все-таки проще в таком случае не городить костыли и просто сделать кастомную страницу.

А страницу быстрей "сгородить"? ;-)

[quote="Dmitry Shnyrev"]Наверное все-таки проще в таком случае не городить костыли и просто сделать кастомную страницу.[/quote]
А страницу быстрей "сгородить"? ;-)

Andrii Muzychuk
А страницу быстрей "сгородить"? ;-)

Как по мне, то у любого опытного программиста должны быть в наличии тонны кода со старых проектов, которые постоянно улучшаются по качеству. Достаточно 1 раз сделать нормальную форму и потом просто использовать её везде.

[quote="Andrii Muzychuk"]
А страницу быстрей "сгородить"? ;-)[/quote]

Как по мне, то у любого опытного программиста должны быть в наличии тонны кода со старых проектов, которые постоянно улучшаются по качеству. Достаточно 1 раз сделать нормальную форму и потом просто использовать её везде.

Andrii Muzychuk
Dmitry Shnyrev
Наверное все-таки проще в таком случае не городить костыли и просто сделать кастомную страницу.

А страницу быстрей "сгородить"? ;-)

так изи же: делаешь филдсет, бегаешь по филдсету и выводишь apex:inputField, скриптом/аттрибутом смотришь и блочишь тот филд который надо. Работы минут на 10.

[quote="Andrii Muzychuk"][quote="Dmitry Shnyrev"]Наверное все-таки проще в таком случае не городить костыли и просто сделать кастомную страницу.[/quote]
А страницу быстрей "сгородить"? ;-)[/quote]
так изи же: делаешь филдсет, бегаешь по филдсету и выводишь apex:inputField, скриптом/аттрибутом смотришь и блочишь тот филд который надо. Работы минут на 10.

Да просто уже сколько лет есть Classic Salesforce со своими стандартными страницами и все знают что нельзя туда засунуть кастомную логику, тем более на Edit Layout. Понимаю еще такой вопрос может задать новичек который SF только первый месяц видит. Но у опытного программиста просто красный свет должен загораться когда просят кастомизировать стандартные layouts.
Да, раньше были лайзеки для view layout через статик ресурсы и JS повешенный на button или через js в sidebar. Но лавочку прикрыли и сделали это не просто так. Поэтому клиенту надо сразу говорить - либо стандартные страницы, либо кастомные с хардкодными/динамическими формами.

Кстати любителям сделать максимално ала стандарт. SF придумало и запустило UI API.
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_get_started.htm
Берем, делаем page builder на этой основе один раз и потом удовлетворяем клиентские прихоти практически мгновенно.

Да просто уже сколько лет есть Classic Salesforce со своими стандартными страницами и все знают что нельзя туда засунуть кастомную логику, тем более на Edit Layout. Понимаю еще такой вопрос может задать новичек который SF только первый месяц видит. Но у опытного программиста просто красный свет должен загораться когда просят кастомизировать стандартные layouts.
Да, раньше были лайзеки для view layout через статик ресурсы и JS повешенный на button или через js в sidebar. Но лавочку прикрыли и сделали это не просто так. Поэтому клиенту надо сразу говорить - либо стандартные страницы, либо кастомные с хардкодными/динамическими формами.

Кстати любителям сделать максимално ала стандарт. SF придумало и запустило UI API.
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_get_started.htm
Берем, делаем page builder на этой основе один раз и потом удовлетворяем клиентские прихоти практически мгновенно. 

Dmitry Shnyrev
Кстати любителям сделать максимално ала стандарт. SF придумало и запустило UI API.
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_get_started.htm
Берем, делаем page builder на этой основе один раз и потом удовлетворяем клиентские прихоти практически мгновенно.

Эта хрень не все объекты поддерживает =((
Мне из-за Event и Task объектов пришлось пилить свою форму.

[quote="Dmitry Shnyrev"]
Кстати любителям сделать максимално ала стандарт. SF придумало и запустило UI API.
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_get_started.htm
Берем, делаем page builder на этой основе один раз и потом удовлетворяем клиентские прихоти практически мгновенно.[/quote]

Эта хрень не все объекты поддерживает =((
Мне из-за Event и Task объектов пришлось пилить свою форму.

Event и Task вообще своеобразные объекты насколько я помню.

Event и Task вообще своеобразные объекты насколько я помню.

Dmitry Shnyrev
Event и Task вообще своеобразные объекты насколько я помню.

Объекты как объекты)
Не хуже и не лучше остальных.

[quote="Dmitry Shnyrev"]Event и Task вообще своеобразные объекты насколько я помню.[/quote]

Объекты как объекты)
Не хуже и не лучше остальных.

Как раз и наоборот. Из-за своих WhatId и WhoId есть некоторые особенности в их поведении. Да, в коде с ними проблем нет, бери и делай. Но я припоминаю были какие-то особенности их использования с которыми приходилось бороться.

https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/api/sforce_api_erd_activities.htm

Как раз и наоборот. Из-за своих WhatId и WhoId есть некоторые особенности в их поведении. Да, в коде с ними проблем нет, бери и делай. Но я припоминаю были какие-то особенности их использования с которыми приходилось бороться.

https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/api/sforce_api_erd_activities.htm

Dmitry Shnyrev
Как раз и наоборот. Из-за своих WhatId и WhoId есть некоторые особенности в их поведении. Да, в коде с ними проблем нет, бери и делай. Но я припоминаю были какие-то особенности их использования с которыми приходилось бороться.

https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/api/sforce_api_erd_activities.htm

Мультилукапы в 1й раз всегда долго пилить.
п.с. заюзал strike компоненты в лайтнинге для ускорения разработки, но до чего же они кривые =((
В апексе написано, чтобы всё было хорошо. Если какой-то косяк - сразу падает exception, который даже не показывает на компоненте. А потом думаешь - почему ничего не работает и ничего не падает.
В самой компоненте написано также...

[quote="Dmitry Shnyrev"]Как раз и наоборот. Из-за своих WhatId и WhoId есть некоторые особенности в их поведении. Да, в коде с ними проблем нет, бери и делай. Но я припоминаю были какие-то особенности их использования с которыми приходилось бороться.

https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/api/sforce_api_erd_activities.htm[/quote]

Мультилукапы в 1й раз всегда долго пилить.
п.с. заюзал strike компоненты в лайтнинге для ускорения разработки, но до чего же они кривые =((
В апексе написано, чтобы всё было хорошо. Если какой-то косяк - сразу падает exception, который даже не показывает на компоненте. А потом думаешь - почему ничего не работает и ничего не падает.
В самой компоненте написано также...

Developer
Мультилукапы

это ты так называешь лукапы, которые могут принимать АйДи разных объектов?

хорошее название, напоминающее об их сущности. а то думаешь, что Owner это только Юзер, а там - бац - и очередь

[quote="Developer"]Мультилукапы[/quote]

это ты так называешь лукапы, которые могут принимать АйДи разных объектов?

хорошее название, напоминающее об их сущности. а то думаешь, что  Owner это только Юзер, а там - бац - и очередь

Den Brown
это ты так называешь лукапы, которые могут принимать АйДи разных объектов?

Это лукапы, которые ведут себя вот так:
https://gyazo.com/332fb072f01ba17bac46298970727243

А те, что могут принимать Id разных объектов - это полиморфные лукапы :)

[quote="Den Brown"]это ты так называешь лукапы, которые могут принимать АйДи разных объектов?[/quote]

Это лукапы, которые ведут себя вот так:
https://gyazo.com/332fb072f01ba17bac46298970727243

А те, что могут принимать Id разных объектов - это полиморфные лукапы :)

Developer
А те, что могут принимать Id разных объектов - это полиморфные лукапы :)

очень хорошо, что разобрались в названиях.

Developer
Это лукапы, которые ведут себя вот так:
https://gyazo.com/332fb072f01ba17bac46298970727243

как такое возможно? или это просто так оформленный список рилетейд записей?

[quote="Developer"]А те, что могут принимать Id разных объектов - это полиморфные лукапы :)[/quote]

очень хорошо, что разобрались в названиях. 

[quote="Developer"]Это лукапы, которые ведут себя вот так: 
https://gyazo.com/332fb072f01ba17bac46298970727243[/quote]

как такое возможно? или это просто так оформленный список рилетейд записей?

Den Brown
как такое возможно? или это просто так оформленный список рилетейд записей?

Поле Name на объекте Event
Можете сами зайти на орг в Lightning и попробовать создать запись.
Правда нужна ещё вот эта опция:
https://gyazo.com/f780e426647957ff4e6ae34865f62c55

[quote="Den Brown"]как такое возможно? или это просто так оформленный список рилетейд записей?[/quote]

Поле Name на объекте Event :)
Можете сами зайти на орг в Lightning и попробовать создать запись.
Правда нужна ещё вот эта опция:
https://gyazo.com/f780e426647957ff4e6ae34865f62c55

Developer
Поле Name на объекте Event

Ну вот, а говорил, что объекты как объекты :)

[quote="Developer"]Поле Name на объекте Event [/quote]
Ну вот, а говорил, что объекты как объекты :)