|
![]() |
#1 |
Banned
|
Да, гребаный метод, который не проверяет наличие dataSource.object() в трехуровневой среде. Обещали в 5.0 исправить.
|
|
![]() |
#2 |
Участник
|
Цитата:
Я помню, столкнулся с какими-то глюками при использовании этого метода. Переписал вот так. Ни разу пока ошибки вроде не вылетали. 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); } } } } |
|