Часто спрашивают как программно выйти из Аксапты. Особенно как это сделать, если внутри нескольких вложенных циклов. Спасибо Максиму Горбунову и Vadik'у за совет.

Для того, чтобы выйти из Аксапты надо воспользоваться конструкцией

infolog.shutdown(true);

Если параметр метода true, то Axapta завершает работу без вопросов. Если параметр метода false, то Axapta задает вопрос: "Вы уверены, что хотите выйти из Navision Axapta?". Если пользователь отвечает Нет, то Аксапта продолжает работать.

Главная особенность данного метода состоит в том, что выход из Аксапты осуществляется не в тот момент, когда вызван метод shutdown. Выход из Аксапты выполняется тогда, когда управление передается в ядро, когда завершен ваш job или класс.

Если вызвать метод shutdown внутри циклов, то он не прерывает работу циклов. Следовательно, Аксапта не зваершит свою работу, пока ваш код не завершит свою работу. Как заставить Аксапту принудительно закрыться? Можно воспользоваться конструкцией для того, чтобы вызвать исключительную ситуацию с типом warning.

int i;

for(i = 0; i<1000000; ++i)
{
    infolog.shutdown(true);
	throw warninng('force shutdown');
}

Если вы нигде не перехватываете это исключение, то ваш код принудительно завершается и управление передается ядру.

 

Буду рад Вашим замечаниям и предложениям.
Мазуркин Сергей, mazzy@mazzy.ru