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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.08.2010, 00:19   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
ax2009: кто юзал Startup command: CompileAll_+ для периодического обновления перекрестных ссылок?
Здесь ax2009: почему обновление перекрестных ссылок перестало быть пакетным заданием?
выяснили, что в ax2009 возникают загадочные some technical problems при компиляции на сервере.
Поэтому построение перекрестных ссылок в пакете просто отключено.

А кто-нибудь пробовал для периодического обновления перекрестных ссылок команду запуска CompileAll с параметром "+"?

Есть впечатления? Как работает? Есть ли баги?
__________________
полезное на axForum, github, vk, coub.
Старый 21.08.2010, 00:55   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Ссылка на доку: How to: Schedule Cross-references Without a Batch. Я сам на трешке делал компиляцию через SysStartupCmd с рассылкой ошибок по почте (но без перекрестных) - работало нормально.

Кстати, припоминаю, что когда 2009 выходила, это было обозначено как новая фича - наверное это и есть рекомендуемы способ.

Последний раз редактировалось belugin; 21.08.2010 в 00:58.
За это сообщение автора поблагодарили: mazzy (2).
Старый 21.08.2010, 01:08   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Я сам на трешке делал компиляцию через SysStartupCmd ... - работало нормально.
Ну, на трешке много чего работало... И AOS'ы не падали. И трава была зеленее.
Вопрос про ax2009. Теперь то как обстоят дела?
__________________
полезное на axForum, github, vk, coub.
Старый 21.08.2010, 16:38   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Где-то год назад это работало, как сейчас не знаю (настроил на ночь - в понедельник посмотрю).
Для этих целей завожу спец.пользователя и ставлю ему галку.
Старый 21.08.2010, 22:09   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Wamr Посмотреть сообщение
...и ставлю ему галку.
Какую? автовыход?
А как из аксапты выходить после генерации перекрестных ссылок?
__________________
полезное на axForum, github, vk, coub.
Старый 23.08.2010, 00:44   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Галку в настройках компилятора для пользователя (Перекрестные ссылки).
Настраиваю Планировщик виндусовый для запуска Аксапты с ключом CompileAll от имени выбранного пользователя.
Аксапта сначала все компилит, потом перестраивает ссылки и сама закрывается.

Вот как-то так всегда работало.
Старый 23.08.2010, 01:24   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 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).
Старый 23.08.2010, 10:01   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
XML-файлик автозапуска (код версии проверяется по значению метода xInfo::releaseVersion()):
Ага! autoRun! Спасибо.
http://axapta.mazzy.ru/lib/autorun/
http://msdn.microsoft.com/en-us/library/aa870082.aspx
__________________
полезное на axForum, github, vk, coub.
Старый 24.08.2010, 22:54   #9  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
У конструкции CompileAll_+ было несколько неприятных особенностей:
  • - она ставила уровень 4 (level 4) в настройках компилятора у пользователя под которым запускалась, несмотря на его (пользователя) предпочтения
  • - она не грохала старые записи, в результате чего наблюдались задвоения при повторном запуске, а само обновление выполнялось дольше
  • - она не обновляла модель данных и иерархию типов. Мелочь конечно - но уж можно было бы все сделать до конца.
...
PHP код:
<AxaptaAutoRun 
    exitWhenDone
="true" 
    
version="5.0" 
    
logFile="D:\AxaptaAutorun.log">
<
Run type="class" name="xRefUpdate" method="updateAll" /> 
</
AxaptaAutoRun
...
Использование такой конструкции аналогично использованию пункта меню Сервис-Средства разработки-Перекрестные ссылки-Периодические операции-Обновить с включенными галками:
  • "Удалить все",
  • "Обновить все",
  • "Обновить модель данных",
  • "Обновить иерархию типов" и
  • с выключенной галкой "Выбрано".
Давайте обратимся к первоисточнику:
SysCompileAll::compile() для перестроения перекрестных ссылок вызывает xRefUpdate::main(new Args(classstr(SysCompileAll))), где есть следующий кусок кода
X++:
        if (args.name() == classStr(SysCompileAll))
        {
            xRefUpdate.updateAll();
        }
Нетрудно видеть, что используется все тотже xRefUpdate.updateAll().
То есть при использовании CompileAll мы имеем тот же самый алгоритм перестроения ссылок.

То есть единственной неприятностью остается Level 4, но для псевдопользователя, который по ночам занимается компиляцией с перестроением перекрестных ссылок, думаю, это не проблема

И да, ночной опыт с CompileAll закончился успешно... и будет теперь повторяться еженочно. Чего и вам желаю.
За это сообщение автора поблагодарили: mazzy (2), sukhanchik (4), jeky (2).
Старый 25.08.2010, 08:50   #10  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Wamr Посмотреть сообщение
Давайте обратимся к первоисточнику:
Нетрудно видеть, что используется все тотже xRefUpdate.updateAll().
Хм... чего-то сие я пропустил... Но ларчик был же... Сам сталкивался....
__________________
Возможно сделать все. Вопрос времени
Старый 23.08.2010, 09:34   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Кстати по поводу логов. Содержимое инфолога - прекрасно пишется в файл, указанный в XML-файле.
__________________
Возможно сделать все. Вопрос времени
Старый 23.08.2010, 10:12   #12  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
О... А оказывается параметр UpdateCrossReference - это вообще раритет с 3.0 SP6 не доживший до 4.0. Вот чего МСу стоило бы оставить сей параметр и дальше? Жалко что ли?
__________________
Возможно сделать все. Вопрос времени
Теги
автозапуск, пакетная обработка, перекрестные ссылки

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax2009: почему обновление перекрестных ссылок перестало быть пакетным заданием? mazzy DAX: Программирование 9 21.08.2010 22:08
А построение перекрестных ссылок опять сожрет всю память и завесит систему нафих Alex_K DAX: Администрирование 15 04.09.2009 22:00
Построение перекрёстных ссылок Paul_ST DAX: Администрирование 6 24.12.2007 14:22
После перестроения перекрестных ссылок начинает жутко тормозить Add-Ins MironovI DAX: Программирование 4 27.09.2007 13:46
Обновление перекрестных ссылок ест память Sada DAX: Программирование 22 11.10.2006 18:22

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:45.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.