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

Непонятнки с FLS.

Привет.
Уже какой день не могу понять где же я "напетлял" с 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 наоборот считают за благо задать вопрос и самому на него ответить.