Показать сообщение отдельно
Старый 23.08.2010, 01:24   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
У конструкции CompileAll_+ было несколько неприятных особенностей:
  • - она ставила уровень 4 (level 4) в настройках компилятора у пользователя под которым запускалась, несмотря на его (пользователя) предпочтения
  • - она не грохала старые записи, в результате чего наблюдались задвоения при повторном запуске, а само обновление выполнялось дольше
  • - она не обновляла модель данных и иерархию типов. Мелочь конечно - но уж можно было бы все сделать до конца.
В 4.0 сделали попытку дать пользователям возможность строить перекрестные ссылки через команду в XML-файле, которая по факту не работает (т.е. метод, обрабатывающий команду UpdateCrossReference был, но нигде не вызывался).

В 2009 документацию не изменили, а сей доблестный метод удалили (видимо, как нигде не использующийся). А там между прочим был очень простой код:
X++:
    xRef = new xRefUpdate();
    if (xRef)
    {
        xRef.updateAll();
        result = true;
    }
который можно безболезненно перенести в XML-файлик автозапуска (код версии проверяется по значению метода xInfo::releaseVersion()):
PHP код:
<AxaptaAutoRun 
    exitWhenDone
="true" 
    
version="5.0" 
    
logFile="D:\AxaptaAutorun.log">
<
Run type="class" name="xRefUpdate" method="updateAll" /> 
</
AxaptaAutoRun
Ссылка на сей файлик содержится в axc-шнике: startupcmd,Text,autoRun_c:\AX\buildXRef.xml

Использование такой конструкции аналогично использованию пункта меню Сервис-Средства разработки-Перекрестные ссылки-Периодические операции-Обновить с включенными галками:
  • "Удалить все",
  • "Обновить все",
  • "Обновить модель данных",
  • "Обновить иерархию типов" и
  • с выключенной галкой "Выбрано".
При этом - "Удалить все" означает исполнение команды на SQL "TRUNCATE TABLE" для каждой XREF* таблицы - т.е. удаление происходит быстро (=мгновенно), а заполнение производится только командой вставки записи (что гораздо быстрее чем обновление)

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

Последний раз редактировалось sukhanchik; 23.08.2010 в 09:30.
За это сообщение автора поблагодарили: mazzy (2), coolibin (2), player (1).