Цитата:
Сообщение от
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);
}
}
}
}