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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2007, 14:16   #1  
maze is offline
maze
Участник
Аватар для maze
 
39 / 10 (1) +
Регистрация: 21.02.2003
Адрес: Одесса
почему на работает common.(fieldId)[idx]
Привет всезнающий ALL
AX3SP3KR3 MSSQL2005

X++:
static void ggvdimensions(Args _args)
{

    LedgerJournalTrans ledgerJournalTrans;
    Common thisCommon;
    DictTable DictTable;
    FieldId fieldId;
    int i, j;
    str ret;
    str value;
    ;
    //берем любую запись ledgerjournaltrans
    select ledgerJournalTrans
        where ledgerJournalTrans.RecId == 17816743;

    thisCommon = ledgerJournalTrans;
    DictTable = new DictTable( thisCommon.TableId);
    for( i=1; i<=dictTable.fieldCnt(); i++)
    {
        fieldId = dictTable.fieldCnt2Id(i);
        if( dimof( thisCommon.(fieldId)) > 1)
        {
            for( j = 1; j<= dimof( thisCommon.(fieldId)); j++)
            {
                value += value ? "-" : "";
                //НЕ РАБОТАЕТ
                value += strfmt( "%1", thisCommon.(fieldId)[j]);
            }
        }
        else value = strfmt( "%1", thisCommon.(fieldId));
        ret += strfmt( "%1 : %2;", fieldId2Name( thisCommon.TableId, fieldId), value);
    }
    info( ret);
}
Не работает конструкция strfmt( "%1", thisCommon.(fieldId)[i]); с сообщением "Ошибка времени выполнения : Неправильный тип аргумента функции". Причем, сообщение не во время компиляции, а во время выполнения

И более общий вопрос...Каким же образом доступится к элементам поля, который является массивом ( пример dimension) в общем случае (не приводя к определенному типу).

Последний раз редактировалось maze; 30.08.2007 в 14:20. Причина: нашел опечатку в коде ни изменяющую суть вопроса
Старый 30.08.2007, 14:26   #2  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Используйте
X++:
(fieldid2ext(fieldId),j)
вместо
X++:
(fieldId)[j])
.
Все массивы в таблицах - как правило EDT. Обычным fieldNum'ом их не возьмешь .

Последний раз редактировалось TasmanianDevil; 30.08.2007 в 14:28.
Старый 30.08.2007, 14:37   #3  
maze is offline
maze
Участник
Аватар для maze
 
39 / 10 (1) +
Регистрация: 21.02.2003
Адрес: Одесса
Спасибо большое!
Действительно помогло.

Интересно что в стандарте есть получение значения массива как common.(fieldId)[idx]
Это метод keyValue класса LedgerReference
X++:
                while (idx2 < dimof(fieldId2Name(common.tableId,dictIndex.field(idx))))
                {
                    keyValue        = keyValue   + fieldId2Name(common.tableId,dictIndex.field(idx))+':'
                                                 + strFmt('%1',common.(dictIndex.field(idx))[idx2]);
                    idx2    += 1;
                }
Старый 31.08.2007, 06:48   #4  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Скобки, скобки, скобки и еще раз скобки
посмотрите внимательно пример из этого класса и свой код

Последний раз редактировалось TasmanianDevil; 31.08.2007 в 06:59.
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему не работает справка? Uncle Fedor DAX: Администрирование 7 10.12.2008 10:15
А почему Завершить сессию Не работает? bm DAX: Функционал 13 28.08.2008 17:58
msdynamicsax: Upgrading a database from Ax 4.0 SP1 to Ax 2009 Blog bot DAX Blogs 1 13.08.2008 14:02
Почему не работает кнопка Исходный документ в Бухг провод? Arahnid DAX: Программирование 1 20.05.2007 11:20
Почему не работает not exists в конструкции while select Владимир Максимов DAX: Программирование 2 03.02.2004 12:17

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

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

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