Привет.
Уже какой день не могу понять где же я "напетлял" с FLS Update, и решил обратиться к людям знающим.
В общем, пришел вот такой результат (в скрине по ссылке):
[img]
https://drive.google.com/file/d/1i6d2fG6V9fIsnD-ASMy1RZPweePqMkTQ/view?usp=sharing
[/img]
а собственно сам код...
@RemoteAction
public static void CtrlDelFld() {
Set<String> LeadFieldName = new Set<String>();
Map<String, Schema.SObjectField> M = Schema.SObjectType.Lead.fields.getMap();
List<Schema.SObjectField> resultList = M.values();
for (Schema.SObjectField Field_name : resultList) {
Schema.DescribeFieldResult f = M.get(Field_name.getDescribe().getName()).getDescribe();
if (f.getType() != Schema.DisplayType.ID
&& f.getType() != Schema.DisplayType.DATETIME
&& f.getType() != Schema.DisplayType.REFERENCE
&& f.getType() != Schema.DisplayType.DATE
&& !f.getLabel().startsWith('SUP')
) {
LeadFieldName.add(f.getName());
}
}
List<LS_Field_value__c> AllSelectedField_values = new List<LS_Field_value__c>();
AllSelectedField_values = [
SELECT Id, API_Name__c,isActive__c,DType__c
FROM LS_Field_value__c
WHERE isActive__c = TRUE AND DType__c != 'Campaign' AND DType__c != 'ABC'AND DType__c != 'CMN'AND DType__c != 'CML'
];
if (Schema.SObjectType.LS_Field_value__c.isAccessible() &&
Schema.SObjectType.LS_Field_value__c.isCreateable() &&
Schema.SObjectType.LS_Field_value__c.isUpdateable() &&
Schema.SObjectType.LS_Field_value__c.fields.API_Name__c.isAccessible() &&
Schema.SObjectType.LS_Field_value__c.fields.isActive__c.isCreateable() &&
Schema.SObjectType.LS_Field_value__c.fields.isActive__c.isUpdateable()) {
for (LS_Field_value__c LS_fv_ctrl : AllSelectedField_values) {
if (!LeadFieldName.contains(LS_fv_ctrl.API_Name__c)) {
LS_fv_ctrl.isActive__c = false;
}
}
}
if (AllSelectedField_values.size() > 0) {
if (AllSelectedField_values.getSObjectType().getDescribe().isUpdateable()) {
update AllSelectedField_values;
}
}
Correct_PL_Val();
SpinnerRuner();
}
Поделитесь мнением, где что я упустил.
Заранее спасибо.
Привет. Уже какой день не могу понять где же я "напетлял" с FLS Update, и решил обратиться к людям знающим. В общем, пришел вот такой результат (в скрине по ссылке): [img] https://drive.google.com/file/d/1i6d2fG6V9fIsnD-ASMy1RZPweePqMkTQ/view?usp=sharing [/img] а собственно сам код... [code] @RemoteAction public static void CtrlDelFld() { Set<String> LeadFieldName = new Set<String>(); Map<String, Schema.SObjectField> M = Schema.SObjectType.Lead.fields.getMap(); List<Schema.SObjectField> resultList = M.values(); for (Schema.SObjectField Field_name : resultList) { Schema.DescribeFieldResult f = M.get(Field_name.getDescribe().getName()).getDescribe(); if (f.getType() != Schema.DisplayType.ID && f.getType() != Schema.DisplayType.DATETIME && f.getType() != Schema.DisplayType.REFERENCE && f.getType() != Schema.DisplayType.DATE && !f.getLabel().startsWith('SUP') ) { LeadFieldName.add(f.getName()); } } List<LS_Field_value__c> AllSelectedField_values = new List<LS_Field_value__c>(); AllSelectedField_values = [ SELECT Id, API_Name__c,isActive__c,DType__c FROM LS_Field_value__c WHERE isActive__c = TRUE AND DType__c != 'Campaign' AND DType__c != 'ABC'AND DType__c != 'CMN'AND DType__c != 'CML' ]; if (Schema.SObjectType.LS_Field_value__c.isAccessible() && Schema.SObjectType.LS_Field_value__c.isCreateable() && Schema.SObjectType.LS_Field_value__c.isUpdateable() && Schema.SObjectType.LS_Field_value__c.fields.API_Name__c.isAccessible() && Schema.SObjectType.LS_Field_value__c.fields.isActive__c.isCreateable() && Schema.SObjectType.LS_Field_value__c.fields.isActive__c.isUpdateable()) { for (LS_Field_value__c LS_fv_ctrl : AllSelectedField_values) { if (!LeadFieldName.contains(LS_fv_ctrl.API_Name__c)) { LS_fv_ctrl.isActive__c = false; } } } if (AllSelectedField_values.size() > 0) { if (AllSelectedField_values.getSObjectType().getDescribe().isUpdateable()) { update AllSelectedField_values; } } Correct_PL_Val(); SpinnerRuner(); } [/code] Поделитесь мнением, где что я упустил. Заранее спасибо.
Спасибо, вопрос закрыт.
Спасибо, вопрос закрыт.
А почему бы не написать решение которое нашлось? Мало ли кто-нибудь такой как вы через пару лет столкнется с такой же проблемой, наткнется на эту тему и все что увидит - вопрос закрыт. Наши иностранные коллеги на stackoverflow наоборот считают за благо задать вопрос и самому на него ответить.
А почему бы не написать решение которое нашлось? Мало ли кто-нибудь такой как вы через пару лет столкнется с такой же проблемой, наткнется на эту тему и все что увидит - вопрос закрыт. Наши иностранные коллеги на stackoverflow наоборот считают за благо задать вопрос и самому на него ответить.