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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.06.2004, 14:39   #1  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Инкрементная компиляция после установки SP3
После установки SP3 наблюдалось такое явление: был мой класс, отнаследованный от стандартного, в SP3 добавили переменную в родительский класс, но из наследника она не была видна, пока родителю не сделали инкрементную компиляцию. Т.е., получается, что компиляция всех классов после установки SP3 не решает эту проблему. Подскажите, пожалуйста, нельзя ли запустить инкрементную компиляцию ВСЕХ классов, и если возможно, то каким образом?
Старый 03.06.2004, 16:18   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Компиляция в Аксапте - это просто праздник какой-то!
Лично мной вопрос до конца не изучен, да и стОит ли тратить время на подробное изучение чужих глюков. Однако некоторые моменты удивляют:

1. Иногда не помогает даже инкрементная компиляция. Например, в случае переименования / добавления непосредственного родителя ("отца") какому-то классу (если он раньше наследовался от кого-то другого), то этот отпрыск в упор не хочет видеть папу, и по-прежнему обращается к "деду". Может, у меня руки кривые, но вот именно в таком случае инкрементная компиляция не помогала.

2. Самое смешное, что иногда спасает обновление перекрестных ссылок, но не всех (ждать замучаешься), а только с пометкой "Обновить иерархию типов". Видимо в этой процедуре реализована корректная инкрементная компиляция.

3. Бывало, что Аксапту приводила в чувство откровенная "грубость" Один класс никак не хотел видеть метод своего предка. Стоило перекрыть в нем этот злополучный метод, но с ошибками (с отличным от отца кол-вом параметров), компилятор, конечно же, ругнулся, но после возвращения всего на место свершилось чудо - сын признал-таки отца!

Кстати, не уверен, но может быть в Вашем случае можно было попробовать объявить ту же переменную в дочернем классе, чем вызвать гнев компилятора. Жаль теперь, когда все устаканилось, уже попробовать не получится (такие чудеса обычно сложно воспроизвести).

P.S. А еще иногда достаточно закрыть и открыть Аксапту, когда совсем непонятно, что происходит...
__________________
Старый 03.06.2004, 16:53   #3  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Возможно, я не точно выразился... Мне не важно, почему "сын" не признает "отца", просто, как я понимаю, после установки SP3 было бы очень неплохо сделать инкрементную компиляцию всех классов, вот мне и интересно, как это сделать (естественно, не "ручками", а что-то типа Job'a).
А обновление перекрестных ссылок делали, не спасло...
Старый 04.06.2004, 10:40   #4  
metal is offline
metal
Юзовские
Дети Юза
 
92 / 10 (1) +
Регистрация: 06.08.2002
Адрес: Украина
Что-то типа джоба написать конечно можно. Сам я этим не занимался, но примерно представляю как это сделать.
Понадобяться классы TreeNode - дя того чтобы пройтись по всем классам репозитария и DictClass чтобы для каждого класса получить всех его родителей.
Объект АОТ компилируется методом AOTcompile класса TreeNode.
Старый 04.06.2004, 11:43   #5  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Насколько я понимаю, все классы компилить не нужно, а только те, у которых есть потомки. В связи с этим вопрос: как найти эти классы (а также получить и имена всех потомков)?
Старый 04.06.2004, 11:44   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Ну, если уж писать джоб, то посмотрите классы:

SysCompileAll,
SysCompileForward,
SysCompilerOutput.

Хотя, все ведь уже написано... Но не всегда работает, поэтому никакой гарантии, что будет работать свой Job, по-моему нет.
__________________
Старый 04.06.2004, 11:56   #7  
metal is offline
metal
Юзовские
Дети Юза
 
92 / 10 (1) +
Регистрация: 06.08.2002
Адрес: Украина
Цитата:
Изначально опубликовано Shirmin Oleg
как найти эти классы (а также получить и имена всех потомков)?
См. методы классов DictClass и SysDictClass.
Старый 04.06.2004, 13:02   #8  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Вот такая заготовка поможет?
PHP код:
static void subClasses(Args _args)
{
    
str space;
    
void findChildrens(ClassId _classId)
    {
        
DictClass dc    = new DictClass(_classId);
        List 
childrens  dc.extendedBy();  // в список заносятся все потомки класса
        
ListIterator li = new ListIterator(childrens);
        ;
        print 
spaceclassid2name(_classId);
// пробежимся по списку
        
while (li.more())
        {
            
space += '  ';
            
findChildrens(li.value());
            
space strdel(space12);
            
li.next();
        }
    }
    ;
    
findChildrens(classnum(JournalTransData));
    
pause;

__________________
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
После установки KR2 на AX3 SP3 не пускает на AOS больше 100 пользователей Alexandr A. Osipkin DAX: Администрирование 14 06.12.2008 02:33
Версия приложение после установки AX 4.0 SP2 FP1 EE IvanOFF DAX: Администрирование 4 04.07.2008 22:45
Количество знаков отображения после запятой в формах и отчетах AX3.0 SP3 ksenia DAX: Функционал 4 07.04.2008 17:27
Проблемы с настройкой после установки DVadim DAX: Прочие вопросы 0 17.05.2005 13:31
После установки прав на группу пользователей в 3-уровневой, просматриваю еще раз..... Сергей Щербак DAX: Администрирование 3 09.04.2004 16:56
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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