|  27.03.2013, 13:05 | #1 | 
| Участник | Вывести сообщение сгенерированное в отдельном потоке (thread) в окно инфо? 
			
			Собственно тема. Сам не делал и не попались ни где примеры. В обработке запущенной в отдельном потоке время от времени могут случаться исключения с ошибкой. Если это не поток, то все нормально информативно выводиться в окно инфо. Но не знаю как выловить текст ошибки исключения если обработка запускается в потоке? Работаю на DAX4. | 
|  | 
|  27.03.2013, 13:13 | #2 | 
| Участник | 
			
			пишите в таблицу или файл
		 | 
|  | 
|  27.03.2013, 14:12 | #3 | 
| Участник | 
			
			Не годится. Это значит я должен брать под контроль ловлю и вывод всех исключений. Но если я это буду делать, то мне и ни файл ни таблица не нужна. Поскидаю в контейнер и верну через параметры. Я имею ввиду случай когда исключения не я сам генерю, а система. Типа разношу чтото, а там наличия например нет. Или пишу в файл, а пути по которому пишу нет. Обычно аксапта в таких случаях чтото вразумительное в окно сообщений выводит, а если делаю те же операции в отдельном потоке, то никаких сообщений, и выловить не знаю их откуда. | 
|  | 
|  27.03.2013, 14:12 | #4 | 
| Участник | 
			
			Функция, запускающая поток всегда принимает контейнер и отдает тоже контейнер, при запуске в потоке - у вас есть объект thread, не теряйте его, подождите ответа (в цикле со sleep допустим), ответ получается thread.getOutputParm (на память). UPD По try catch можно отловить момент возникновения варинингов и ерроров, в обработчике пакуйте инфолог и OutputParm его Последний раз редактировалось imir; 27.03.2013 в 14:16. | 
|  | 
|  27.03.2013, 14:35 | #5 | 
| Участник | Цитата: 
		
			Сообщение от Perc
			   Не годится. Это значит я должен брать под контроль ловлю и вывод всех исключений. Но если я это буду делать, то мне и ни файл ни таблица не нужна. Поскидаю в контейнер и верну через параметры. Я имею ввиду случай когда исключения не я сам генерю, а система. Типа разношу чтото, а там наличия например нет. Или пишу в файл, а пути по которому пишу нет. Обычно аксапта в таких случаях чтото вразумительное в окно сообщений выводит, а если делаю те же операции в отдельном потоке, то никаких сообщений, и выловить не знаю их откуда. | 
|  | 
|  27.03.2013, 14:38 | #6 | 
| Участник | |
|  | 
|  27.03.2013, 14:57 | #7 | 
| Участник | Цитата: 
		
			Сообщение от imir
			   Функция, запускающая поток всегда принимает контейнер и отдает тоже контейнер, при запуске в потоке - у вас есть объект thread, не теряйте его, подождите ответа (в цикле со sleep допустим), ответ получается thread.getOutputParm (на память). UPD По try catch можно отловить момент возникновения варинингов и ерроров, в обработчике пакуйте инфолог и OutputParm его X++: static client void runThread(Thread t) { real x=10, y, z; container retVal; ; try { z = x/y; } catch (exception::error) { retVal = [infoLog.num()]; t.setOutputParm(retVal); throw exception::error; } retVal = [infoLog.num()]; t.setOutputParm(retVal); } X++: static client Thread run() { Thread t = new Thread(); ; t.run( classnum( TutorialThread ), identifierstr(runThread)); info(con2str(t.getOutputParm())); } | 
|  | 
|  27.03.2013, 18:48 | #8 | 
| Developer | 
			
			xInfo.copy Method База знаний ERP: Axapta/ Info Log -> Получение и сохранение собщений Интересно, а для какой цели вы используете поток(и)? | 
|  | 
|  28.03.2013, 12:11 | #9 | 
| Участник | 
			
			Терминал аксапты переехал на терминал с новым виндусом. Пошли проблемы с печатью форм в ексель и ворд из Аксапты через СОМ. У нас их очень нужных есть несколько штук. Переписывать тяжко. Хочется малой кровью. Почитал что пишет народ про эту проблему. Из рассмотренных мероприятий эффективным показал себя именно вариант формирования отчета в Ворд в отдельном потоке. Мы работаем на DAX4, но тут я еще вспомнил. Когда смотрел доработки по корректировочным счетам-фактурам в DAX2009 меня удивил замысловатый способ формирования корректировочной фактуры в ексель. Не понял зачем так). Теперь думаю микрософт решал видимо туже проблему). Но вот только в этой методе меня шибко не устраивает, что все проверки предотчетные и возможные сбои о которых обычно Аксапта извещает както в инфолог , теперь не отображаются автоматом. Молчок и все). Вот хотелось это както победить по скорому. Но не получилось пока... | 
|  | 
|  29.03.2013, 12:37 | #10 | 
| Участник | 
			
			Удалось таки решить свою проблему с помощью ссылок зала и экспериментов). Заодно подучился данные инфолога сохранять и восстанавливать) Выше там у меня пример был почти все верно написан, за исключением нюанса. После thread.run(, нужно было вставить ожидание thread.waitUntilSignaled(); А то получалось соответственно, что заполнял инфолог позже того как пытался посмотреть в нем данные.. Ну и главное любимые наши формы вордовские стали выводиться без выкидонов) | 
|  | 
| Теги | 
| thread | 
|  | 
| 
 |