04.07.2007, 06:22 | #1 |
Участник
|
Как обмануть fieldnum
Добрый день
есть такая проблемка,хочу в цикле перебирать все поля в таблице и передавать их в fieldnum и .. проблема выдается ошибка Вот мой код DictTable dt = new DictTable(_forecastpurch.TableId); int n,k,i; n= dt.fieldCnt(); for (i=1;i<n;i++) { k=dt.fieldCnt2Id(i); if (dt.fieldName(k)!='itemid') { ForecastPurch_DS.object(fieldnum(ForecastPurch,dt.fieldName(k))).allowEdit(false); } } Может надо как то подругому или вообще есть другой способ |
|
04.07.2007, 08:40 | #2 |
Участник
|
Так у вас же в k уже находится Id поля. Подставляйте его вместо fieldNum()
Кстати, правильнее было бы указать для k тип FieldId PS Надо учитывать наличие массивов. И ошибка, скорее всего, связана с отсутствием .object() - надо проверять на NULL X++: DictTable dt = new DictTable(_forecastpurch.TableId); int i; FieldId id = 0; FieldId extId; DictField dictField; ; id = dt.fieldNext(id); while (id) { if (id != fieldNum(ForecastPurch, itemId)) { dictField = dt.fieldObject(id); for (i=1;i<=dictField.arraySize();i++) { extId = fieldid2ext(id, i); if (ForecastPurch_DS.object(extId)) ForecastPurch_DS.object(extId).allowEdit(false); } } id = dt.fieldNext(id); }
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 04.07.2007 в 09:14. |
|
04.07.2007, 14:01 | #3 |
Участник
|
Цитата:
Сообщение от AndyD
Так у вас же в k уже находится Id поля. Подставляйте его вместо fieldNum()
Кстати, правильнее было бы указать для k тип FieldId PS Надо учитывать наличие массивов. И ошибка, скорее всего, связана с отсутствием .object() - надо проверять на NULL X++: DictTable dt = new DictTable(_forecastpurch.TableId); int i; FieldId id = 0; FieldId extId; DictField dictField; ; id = dt.fieldNext(id); while (id) { if (id != fieldNum(ForecastPurch, itemId)) { dictField = dt.fieldObject(id); for (i=1;i<=dictField.arraySize();i++) { extId = fieldid2ext(id, i); if (ForecastPurch_DS.object(extId)) ForecastPurch_DS.object(extId).allowEdit(false); } } id = dt.fieldNext(id); } короче вот так вот заработало: ................... .................. id = dt.fieldNext(id); while (id) { if (id != fieldnum(ForecastPurch,itemId)) { dictField = dt.fieldObject(id); extId = fieldid2ext(id, i); if (ForecastPurch_DS.object(extId)) { ForecastPurch_DS.object(extId).allowEdit(false); } } id = dt.fieldNext(id); } |
|
04.07.2007, 14:40 | #4 |
Участник
|
Прикольно. Взял и проигнорировал замечания про длину arraySize и про _ds.object(), который может вернуть null и вызвать ошибку времени выполнения.
Молодец! P.S. Да, про _ds.object() это уже я наврал - проверка есть. недоглядел Последний раз редактировалось kashperuk; 04.07.2007 в 15:07. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Ошибка COM-объекта | 15 | |||
Query из 7 таблиц | 29 | |||
Вопрос по SysQueryRun | 34 | |||
fieldNum(map) <-> fieldNum(table) ? | 8 | |||
Как установить связь такого вида? | 1 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|