Тема: checkbox in grid
Показать сообщение отдельно
Старый 22.06.2007, 15:21   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от EVGL Посмотреть сообщение
Да, гребаный метод, который не проверяет наличие dataSource.object() в трехуровневой среде. Обещали в 5.0 исправить.
Что значит не проверяет?

Я помню, столкнулся с какими-то глюками при использовании этого метода.
Переписал вот так. Ни разу пока ошибки вроде не вылетали.

X++:
static void allowEditFieldsOnFormDs_W(FormDataSource _dataSource, boolean _allowEdit)
{
    DictTable       dictTable;
    DictField       dictField;
    int             cx, idx;
    FormDataObject  dataSourceField;
    ;
    if (!_dataSource)
        throw error(@"Источник данных пустой. Обратитесь к разработчикам");

    dictTable = new DictTable(_dataSource.table());
    if (!dictTable)
        throw error(@"Таблица источника данных пустая. Обратитесь к разработчикам");

    for(cx = 1; cx <= dictTable.fieldCnt(); cx ++)
    {
        dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(cx));
        if (!dictField)
            throw error(@"Критическая ошибка. Обратитесь к разработчикам");

        if(!dictField.isSystem())
        {
            for(idx = 1; idx <= dictField.arraySize(); idx++)
            {
                dataSourceField = _dataSource.object(fieldId2Ext(dictField.id(), idx));
                if (!dataSourceField)
                    throw error(@"Критическая ошибка при установке доступа на редактирование поля. Обратитесь к разработчикам");
                dataSourceField.allowEdit(_allowEdit);
            }
        }
    }
}