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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2007, 13:42   #1  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
Переполнение исполнения кода
Всем привет,

При выполнении джоба возникает ошибка времени выполнения
"Переполнение во внутреннем стеке исполнения кода" если
NestingLevel больше 400.

Код:
static void JobNestingLevel(Args _args)
{
    ClassA  a, b;
    int     i;
    #define.NestingLevel(401)
    ;

    i = 0;
    a = new ClassA();
    while (i < #NestingLevel)
    {
        b = new ClassA();
        a.addChild(b);
        i = i + 1;
    }
}

//Такой вот ClassA:

class ClassA
{
    ClassA    child;

    void addChild(ClassA _node)
    {
        ;

        if (child)
        {
            child.addChild(_node);
        }
        else
        {
            child = _node;
        }
    }
}
В Основных средствах при построении дерева структуры ос
используются методы подобные addChild и возникают некоторые
траблы, у кого-нибудь повторяется?
Старый 11.01.2007, 13:47   #2  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,263 / 982 (37) +++++++
Регистрация: 03.04.2002
Да, есть ограничение на количество вложенных вызовов. Рекурсию лучше не использовать, т.к. приводит к трудновоспроизводимым багам
__________________
Isn't it nice when things just work?
Старый 11.01.2007, 14:51   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Установка самого последней версии MDAC (Microsoft Data Access Components) расширяет этот предел, насколько мне известно. (если база MS SQL)
Это не решение, но может удовлетворить вашу конкретную задачу.
Старый 11.01.2007, 14:54   #4  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Думаю что MDAC может повлиять только на вложенность рекурсий на скуле и врядли на вложенность рекурсий в Аксапте.. Вообще для аксапты этот предел достаточно большой - какая у вас вложенность структуры интересно??
Старый 11.01.2007, 16:58   #5  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
Цитата:
Сообщение от MironovI
Вообще для аксапты этот предел достаточно большой
Получается что 400.
Цитата:
Сообщение от MironovI
какая у вас вложенность структуры интересно??
Небольшая, максимально единица, но много осов имеют один главный ос, и,
вроде как стандартный, класс RAssetFamilyTreeNode строит структуру рекурсией,
достигает количества рекурсивного вызова 400 и не зависая и не ругаясь
ошибкой просто прекращает выполнять код, аксапта 3.00 сп4.
Старый 11.01.2007, 17:52   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Что-то похожее было при работе со спецификациями, но там предел наступал гораздо раньше.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
эффективное отображение исполнения кода Evgeniy2020 DAX: Программирование 8 31.07.2008 11:11
как сообщить об ошибках, не прерывая исполнения кода chanchala DAX: Программирование 11 16.07.2008 12:28
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Отображение названия вместо кода! demID DAX: Программирование 31 05.10.2004 00:03
Использование штрихового кода (barcode) в Аксапта Pavlo AKA Panok DAX: Функционал 9 17.10.2003 15:13
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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