У конструкции 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) - позволяет не использовать АХ-овый пакетник (это актуально, к примеру, на разработческом приложении, когда нужно постоянно перезаходить, чтобы "подцепить" последние изменения в коде), при этом хочется, чтобы построив ссылки - АХ завершила бы работу (закрыла сессию)