Обработка поступающих вложений doc

  • Автор темы Автор темы anna
  • Дата начала Дата начала
A

anna

Уважаемый all! Я понимаю, что ворд на сервере это плохо, но пока увы. Проблема в том, что никак не удается наладить четкую обработку на стороне сервера - открыли ворд - первый файл обработали - n-ный файл обработал и- закрыли ворд, ждем пока новые файлы придут.
Что-то ломается после первого прохода, приходится его убивать taskkill и запускать обработку по новой. Это на сервере, на клиенте все ок.
И да, лотусскрипт, на жаву переписывать 3000 строк кода нет желания, нормально будем реализовывать новую уже схему (я надеюсь, что сделаем интеграцию хотя бы через xml).
Как бы минимизировать taskkill и количество запусков ворда?
 
И да, лотусскрипт, на жаву переписывать 3000 строк кода нет желания
и не надо - делается рапер, для основных манипуляций
на жаву переписывать 3000 строк кода нет желания
когда-то это делать придется (почти в принудительном порядке) ибо ИБМ забросила LS
обработал и- закрыли ворд
попытаться не закрывать Application и искать его по GetObject, но для агентов, кмк, анриал (агент похачит хендлы)...
если внешним кодом только, крутить в цикле WS к-л, кот. по событию в ФС будет обрабатывать виндятскими примочками файло
как пример вот такая
а вопщем - POI/XML + veloicity и никаких вордей :)
можно еще jasperreports заюзать
 
для систем типа В2К3
 
пойдите от обратного...перед обработкой убивайте все процессы word, если они остались от прошлой обработки. Т.,о перед свой обработкой вы точно будете гарантировать что остатков word-a нет на машине и они не приведут к поломке текущей обработки
Код:
Sub CloseMSWord()
	On Error GoTo ErrH
	Dim objs As Variant
	Dim strSQL As String
	Dim strWMI As String
	strWMI = "winmgmts:"
	strSQL = "Select * From Win32_Process "
	strSQL = strSQL & "where Name = 'WINWORD.EXE'"
	Set objs = GetObject(strWMI).ExecQuery(strSQL)
	ForAll obj In objs
		obj.Terminate
	End ForAll
Quit:
	Exit Sub
ErrH:
	Error Err, Error$ & " in " & GetThreadInfo(1) & " line " & CStr(Erl)
End Sub
 
Последнее редактирование модератором:
  • Нравится
Реакции: duchan
и не надо - делается рапер, для основных манипуляцийкогда-то это делать придется (почти в принудительном порядке) ибо ИБМ забросила LS
попытаться не закрывать Application и искать его по GetObject, но для агентов, кмк, анриал (агент похачит хендлы)...
если внешним кодом только, крутить в цикле WS к-л, кот. по событию в ФС будет обрабатывать виндятскими примочками файло
как пример вот такая
а вопщем - POI/XML + veloicity и никаких вордей :)
можно еще jasperreports заюзать
А зачем весь этот обвес, если в mail-in базу будет просто попадать xml? В день ~200 штук по 4кб. Если, конечно, устраивать конвейер на сотни тысяч файликов.....
 
На что может так ругаться?


Ошибка (New) 213, Microsoft Word: Недостаточно памяти. Немедленно сохраните документ., Microsoft Word: Недостаточно памяти. Немедленно сохраните документ. on line 139
 
@erdi, иногда ;) желательно еще и подождать
этим англицизмом (wrapper - обертка) я назвал набор из типа Адаптер и ему аналогичные
[DOUBLEPOST=1425373264,1425373196][/DOUBLEPOST]
На что может так ругаться?
именно на недостаток памяти процесса ;)
 
А зачем весь этот обвес, если в mail-in базу будет просто попадать xml?
ни задачи ни реализации я не видел ;)
дополнение по раперу - все вызовы типа CreateObject будут заменены на соответ. класс рапера
а его инстанс будет подменять используемые методы на свою реализацию
[DOUBLEPOST=1425376133,1425375940][/DOUBLEPOST]
[DOUBLEPOST=1425373264,1425373196][/DOUBLEPOST]
именно на недостаток памяти процесса ;)
Какой памяти? вроде все свободно: на диске много и оперативка пустая
какбэ домина использует "свою" память в своем процессе
у ЛС ограничения на стэк и хип - все вместе 2Гб (32бит и т.п.), вот сколько осталось для передачи КОМе - уже вопрос
[DOUBLEPOST=1425376313][/DOUBLEPOST]короче - без кода и окружения невозможно понять суть ваших ошибок
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!