|  02.11.2007, 12:05 | #1 | 
| Участник | как юзать чужой  wordDocument 
			
			привет всем, подскажите пожалуйста, скажем есть чужой метод Create_Report(EmplId) X++:  void Create_Report(EmplId _emplid) 
wordDocument.tableAddRow();
 wordDocument.tableInsertValue(i,1,VirtualNetworkEducation.description);
 wordDocument.tableInsertValue(i,2,VirtualNetworkEducation.EducationDiploma);X++: Reports.Create_Report(EmplId); | 
|  | 
|  02.11.2007, 13:09 | #2 | 
| Участник | 
			
			Daido, предполагаю, что класс Reports, что бы это не было, предоставляет интерфейс для вывода файлов в Ворд - в том числе он сам инициализирует нужные классы. Поэтому wordDocument там видимо инициализируется где-то при инициализации класса. | 
|  | 
|  02.11.2007, 13:26 | #3 | 
| Участник | не совсем вас понел kashperuk 
			
			т.е я открываю сам шаблон X++: wordDocument = new ComWordDocument_RU(); wordDocument.newFile(templateFile, false); X++: Reports.Create_Report(EmplId); X++: wordDocument.documentSaveAs("C:\\My_Report.doc"); wordDocument.quitApplication(true); Последний раз редактировалось Daido; 02.11.2007 в 13:43. | 
|  | 
|  02.11.2007, 13:35 | #4 | 
| Участник | X++: COM doc; COM app; wordDocument.documentSaveAs("C:\\Report_T2.doc"); doc =wordDocument.getComDocument(); app = doc.Application(); doc.close(false); app.quit(false); Цитата: 
		
			Данный файл открыт токлько для чтения (С:\Report_T2.doc) Последний раз редактировалось Daido; 02.11.2007 в 14:44. | 
|  | 
|  02.11.2007, 15:14 | #5 | 
| Участник | 
			
			и так пробовал X++: wordDocument.documentSaveAs("C:\\Report_T2.doc"); wordDocument.quitApplication(true); wordDocument.finalize(); Цитата: 
		
			Данный файл открыт токлько для чтения (С:\Report_T2.doc)   | 
|  | 
|  02.11.2007, 16:51 | #6 | 
| MCTS | 
			
			Все вроде с большего нормально. Должен закрываться и открываться корректно. А как у вас отработает такой вот джоб, если его запустить несколько раз? X++: static void Job98(Args _args) { COM COMApplication, comDocuments, comDocument; ; COMApplication = new COM("Word.Application"); comDocuments = COMApplication.Documents(); COMDocument = comDocuments.Add("c:\\1.doc"); COMDocument.saveAs("c:\\1.doc"); COMDocument.saved(true); COMDocument.finalize(); COMApplication.Quit(); } 
				__________________ С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. | 
|  | 
|  03.11.2007, 07:45 | #7 | 
| Участник | 
			
			инфолог пишет Цитата: 
		
			Сообщение (10:45:03) Метод "Add" в COM-объекте класса "Documents" возвратил код ошибки 0x800A141F (<неизвестно>), который означает: Не удалось прочитать документ. Возможно, он поврежден. Попробуйте выполнить следующие действия: * Откройте файл с помощью команды ''Открыть и восстановить''. * Откройте файл с помощью конвертера резервных копий. Цитата: 
		
			del *.doc
		
	  только как с DAX запустить внешний приложение .bat Последний раз редактировалось Daido; 03.11.2007 в 08:04. | 
|  | 
|  03.11.2007, 08:21 | #8 | 
| Участник | 
			
			может мне надо закрыть документ с помощью метода closeDocument, подскажите параметры метода closeDocument пишу Цитата: 
		
			wordDocument.closeDocument(true,1);
		
	 Цитата: 
		
			документ должен быть переопределен
		
	 | 
|  | 
|  05.11.2007, 16:29 | #9 | 
| MCTS | Цитата: 
		
			инфолог пишет...
		
	 Батник запустить: Цитата: 
		
			WinApi::shellExecute("c:\\1.bat");
		
	 
				__________________ С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. | 
|  | 
|  06.11.2007, 18:11 | #10 | 
| Moderator | Цитата: 
		
			Сообщение от Daido
			   т.е я открываю сам шаблон X++: wordDocument = new ComWordDocument_RU(); wordDocument.newFile(templateFile, false); X++: Reports.Create_Report(EmplId); X++: wordDocument.documentSaveAs("C:\\My_Report.doc"); wordDocument.quitApplication(true); Мне кажется, вам нужно сначала запускать чужой отчет, а потом подключаться в эту "чужую" Word-сессию примерно таким оператором: X++: wordApp = COM::getObject('Word.Application');Некоторое неудобство такого подхода заключается в том, что если запущено несколько сессий Ворд (например, вы еще сами вручную редактируете какой-то свой документ), то нельзя предсказать в какую сессию подключится COM::getObject. Поэтому перед началом такого процесса все другие Ворды необходимо закрыть, и тогда COM::getObject предсказуемо подключится в единственную сессию. | 
|  | 
|  07.11.2007, 14:19 | #11 | 
| Участник | 
			
			всем спасибо, вопрос снять, разобрался )))
		 | 
|  |