![]() |
#1 |
Участник
|
Создание объекта таблицы по ее имени
Доброго времени суток Коллеги.
Вот у меня возникла проблемка. Хочу перебрать все поля таблицы (их описания), которую укажут в диалоге. Посадил на диалог поле для ввода текста и вызываю метод моего класса, в параметре которого передается строка из диалога. Данная строка будет являться именем таблицы, поля которой мне нужно перебрать. Но как мне из строкового выражения создать объект. а может я не так предоставляю выбор таблицы? Поделитесь пожалуйста опытом. Заранее благодарен! |
|
![]() |
#2 |
Участник
|
\System Documentation\Classes\DictTable\makeRecord
|
|
![]() |
#3 |
Axapta
|
Что-то не совсем понял. А зачем создавать объект, чтобы перебрать св-ва полей? Есть замечательные классы DictTable и DictField.
|
|
![]() |
#4 |
Участник
|
ну вобще мне нужно для произвольной таблицы узнать:
какие у нее есть поля и описание полей |
|
![]() |
#5 |
Участник
|
DictTable очень вам в этом поможет - при создании объекта нужно ему передать tableId той таблицы (произвольной), которой нужно.
И сразу объект этот будет все знать об этой таблице ![]() А для того чтобы получить tableId достаточно метода tableName2Id() |
|
|
За это сообщение автора поблагодарили: demon46 (1). |
![]() |
#6 |
Участник
|
Об этом я знаю. Но при создании объекта необходимо передавать его ID а у меня есть название таблицы
|
|
![]() |
#7 |
Участник
|
Упс... простите не дочитал
|
|
![]() |
#8 |
Axapta
|
Зачем объект-то создавать?
|
|
![]() |
#9 |
Участник
|
Вот тебе еще кусочек кода:
Код: static void Job5(Args _args) { #define.yourTableNameFromDialog('InventTable') DictTable dt; DictField df; int i; ; dt = new DictTable(tableName2Id(#yourTableNameFromDialog)); for (i = 1; i <= dt.fieldCnt(); i++) { info(fieldId2Name(dt.id(), dt.fieldCnt2Id(i))); df = new DictField(dt.id(), dt.fieldCnt2Id(i)); //df.получаем о поле всю необходимую инфу } } ![]() |
|
![]() |
#10 |
Axapta
|
X++: static void JOB6666() { SysDictTable dictTable; SysDictField dictField; int i; ; dictTable = new SysDictTable(tableName2Id('CustTable')); for (i = 1; i <= dictTable.fieldCnt(); i++) { dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(i)); info (dictField.name()); } } ![]() Последний раз редактировалось oip; 13.09.2006 в 15:59. |
|
|
За это сообщение автора поблагодарили: demon46 (1). |
![]() |
#11 |
Участник
|
Вот вам даже 2 кусочка кода - по-разному сделанных
![]() |
|
![]() |
#12 |
Участник
|
Это конечно не по теме, но мне все же важно! В форуме на исходниках есть опция закрытия темы. А на этом форуме я не нашел данной опции. Здесь темы закрывает модератор? Ну не нравится мне, когда вопрос решен, а тема еще открыта... Подскажите как закрыть тему.
|
|
![]() |
#13 |
Axapta
|
Не стоит закрывать тему! Если у кого-нить потом возникнет вопрос подобный, то он сможет его задать в этой теме, а не создавать новую. ИМХО.
PS Тут принято кликать на зеленый квадратик, если Вам кто-то помог. ![]() Последний раз редактировалось oip; 13.09.2006 в 16:05. |
|
![]() |
#14 |
Участник
|
Написать просто можно - тема закрыта.
![]() Отписаться от подписки на нее, чтобы не получать уведомления в дальнейшем. И поблагодарить участников + оценить саму тему |
|
![]() |
#15 |
Moderator
|
Цитата:
Включайте там в экселе автофильтр и смотрите поля любой таблицы. Можно даже с собой на дачу взять на ноутбуке и под коньячок, укрывшись пледом, неспешно изучать ![]() Или Вы просто в программировании этих вопросов хотите попрактиковаться? |
|
![]() |
#16 |
Участник
|
Да но тут еще один вопрос а что если пользователь ошибется в одном символе и такой таблици не окажется?
|
|
![]() |
#17 |
Участник
|
тогда метод tablename2id вернет 0 - сделайте проверку на это и все.
|
|
![]() |
#18 |
Axapta
|
X++: static void JOB6666() { SysDictTable dictTable; SysDictField dictField; int i; ; dictTable = new SysDictTable(tableName2Id('CustTable1')); if (dictTable) { for (i = 1; i <= dictTable.fieldCnt(); i++) { dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(i)); if (!dictField.isSystem()) info (dictField.name()); } } else { error ('Такой таблицы нет!'); } } |
|
![]() |
#19 |
Участник
|
GUSTAV я помню, что вы такое уже писали, но там перебор таблиц шел по ID. Да и к тому же мне данный вариант был неудобен.
|
|
![]() |
#20 |
Участник
|
И снова всем огромнейшее спасибо.
|
|