AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.03.2007, 07:38   #1  
YouRock is offline
YouRock
Участник
Аватар для YouRock
 
1 / 10 (1) +
Регистрация: 16.07.2006
Адрес: Омск
? Проверка наличия поля в DictTable
Ребята, помогите, с проверкой.
Какими методами можно проверить существование поля в DictTable?
exist недоступен, а перебирать каждое поле для сравнения с шаблоном имхо не рационально.

Axapta 3.0 Build SP 2/OP023-19 Oracle
Старый 22.03.2007, 08:42   #2  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Насколько помню dictTable.fieldName2Id("Bla-bla") возвращает 0, если поля нет в таблице
__________________
С уважением, Вячеслав.
Старый 22.03.2007, 08:44   #3  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Перебор есть в методе SysApplCheck.checkFieldDefaultReport()
По моему отсюда и выход если есть fieldId, то и перебирать не нужно
Старый 22.03.2007, 08:57   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А каким образом вы идентифицируете поле?

Если по имени - то как предложил slava
Если по Id'у, то так
X++:
if (new DictField(dictTable.id(), fieldId))
В случае проверки по имени полей, входящих в состав массива надо будет объединить со способом, предложенным slava - fieldName2Id() для имен полей вида "Dimention[x]" всегда будет возвращать extFieldId с размерностью, указанной в имени.
X++:
    DictTable   dictTable = new DictTable(tableNum(LedgerTable));
    FieldId     fieldId;
    ;
    if (dictTable)
    {
        fieldId = dictTable.fieldName2Id("Dimension[4]");
        if (fieldId && new DictField(dictTable.id(), fieldId))
        {
            // поле существует
        }
    }
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 22.03.2007 в 09:00.
Старый 22.03.2007, 08:59   #5  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Или так
X++:
static void Job2(Args _args)
{
    void PrintExistCustField()

    {

        int i, n, k;

        CustTable c;

        DictTable dt;

        dt=new DictTable(c.TableId);

        n=dt.fieldCnt();



        print "Number of fields in table: ", n;

        for(i=1; i<=n; i++)

        {

            k=dt.fieldCnt2Id(i);

            print "The ", dt.fieldName(k), " field exist with Id=",k ;

            pause;

        }

    }
    PrintExistCustField();
}
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Denis Fedotenko: Новые поля в складских проводках Blog bot DAX: База знаний и проекты 10 24.05.2007 11:57
Проверка заполнения Mandatory полей на Datasource Wamr DAX: База знаний и проекты 4 26.06.2006 18:15
Как определить принадлежность поля к группе simply2double DAX: Программирование 2 11.05.2005 17:17
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Получить значение поля таблицы по номеру (Id) поля Anais DAX: Программирование 2 15.04.2004 13:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:06.