Показать сообщение отдельно
Старый 08.12.2009, 11:07   #12  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
пользуюсь таким вариантом, последний необязательный аргумент - список полей, которые нужно оставить редактируемыми.

X++:
//Установить AllowEdit = _allowEdit для всех полей исключая _fieldListExclude
static void setFieldsAllowEdit(FormDataSource _formDataSource, boolean _allowEdit, container _fieldListExclude = connull())
{
    FormDataObject  fdo;
    FormObjectSet   fos;
    DictTable       dictTable = new DictTable(_formDataSource.table());
    DictField       dictField;
    int             fieldCount = dictTable.fieldCnt();
    int             i;
    int             j;
    FieldId         fieldId;
    boolean         allowEdit;
    ;

    fos = _formDataSource;

    for (i = 1; i <= fieldCount; i++)
    {
        dictField = new DictField(dictTable.id(), dictTable.fieldCnt2Id(i));

        for (j = 1; j <= dictField.arraySize(); j++)
        {
            fdo = fos.object(fieldId2ext(dictField.id(), j));
            allowEdit = confind(_fieldListExclude, dictField.id()) ? ! _allowEdit : _allowEdit;

            if (fdo)
            {
                fdo.allowEdit(allowEdit);
            }
        }
    }
}