Показать сообщение отдельно
Старый 16.10.2009, 19:06   #1  
Bishop is offline
Bishop
Участник
 
89 / 60 (3) ++++
Регистрация: 12.08.2004
Адрес: Москва
Ошибка в DialogField.value() (все версии AX)
Столкнулся со следующей ошибкой:
При добавлении в "серверный" RunBase-класс многомерного поля (например, Dimension) методом dialog.addField() и последующим выполнением runBaseClass.prompt(), возникает ошибка в DialogField.value() в строке:
X++:
                    dictType.setValue(Cur);
Ошибка связана с различными размерностями типа в dictType и переменной Cur, инициализируемой в данном случае в dialogField.init() в секции:
X++:
    if (dialog.isOnServer())
    {
        switch (baseType)
        {
            case Types::String:
            case Types::VarString:
                value = [''];
                break;
            case Types::Integer:
            case Types::Real:
            case Types::Enum:
            case Types::Date:
            case Types::DateTime:
            case Types::Int64:
                value = [0];
                break;
Можно исправить DialogField.value() так:
X++:
                    // -->
                    if (dimOf(Cur) == arraysize)
                        dictType.setValue(Cur);
                    // <--
Либо, в подобных ситуациях, пользоваться методом dialog.addFieldValue() или принудительно инициализировать значение методом fieldValue.value(_dimValue_).
За это сообщение автора поблагодарили: player (1).