1C и word. Закрытие документа word c сохранением без диалоговых форм

1. Milanick 27.07.18 13:11 Сейчас в теме
Добрый день.
Столкнулся с таким вопросом:

&НаКлиенте
Процедура ОбработатьФайл(ПутькФайлу)
	
	
	Word =  Новый COMОбъект("Word.Application");
	DocWord = Word.Documents.ADD(ПутькФайлу);
	
	DocWord.sections.item(1).footers.item(1).Range.Text = "Мой любимый документ";
	
        Word.Application.DisplayAlerts =-1; 
	Word.Documents.save();
        Word.Documents.close();
	word.quit();
	Word = Неопределено;

КонецПроцедуры
Показать


При выполнении кода, система подвисает из за word , который вызывает диалоговое окно запроса на сохранение. Собственно, а как сделать чтобы не спрашивал. Тупо сохранил в файл молча :)
Найденные решения
11. Milanick 27.07.18 15:12 Сейчас в теме
Вот рабочий код, нашел

Word =  Новый COMОбъект("Word.Application");
	word.Visible = 0;	
	word.Application.DisplayAlerts = ложь;
		
	Word.Documents.ADD();
	DocWord = Word.Documents.Open(ПутькФайлу);
	DocWord.Activate();
	
	DocWord.sections.item(1).footers.item(1).Range.Text = "Мой любимый документ";

    Word.Application.DisplayAlerts =-1; 
	
	Word.ActiveDocument.saveas(ПутькФайлу);
  
	word.Application.quit(); 
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. SlavaKron 27.07.18 13:45 Сейчас в теме
(1)
как сделать чтобы не спрашивал.

Word.Quit(0)
6. Milanick 27.07.18 14:15 Сейчас в теме
(4) он закрывает, но не сохраняет.
Нужно внести в документ изменение, затем записать
11. Milanick 27.07.18 15:12 Сейчас в теме
Вот рабочий код, нашел

Word =  Новый COMОбъект("Word.Application");
	word.Visible = 0;	
	word.Application.DisplayAlerts = ложь;
		
	Word.Documents.ADD();
	DocWord = Word.Documents.Open(ПутькФайлу);
	DocWord.Activate();
	
	DocWord.sections.item(1).footers.item(1).Range.Text = "Мой любимый документ";

    Word.Application.DisplayAlerts =-1; 
	
	Word.ActiveDocument.saveas(ПутькФайлу);
  
	word.Application.quit(); 
Показать
12. Power_0N 46 04.08.23 12:14 Сейчас в теме
(11) У меня вот так получилось методом проб и ошибок заполнение из шаблона и сохранение в PDF
        ИмяФайла = ПолучитьИмяВременногоФайла(".dotx"); 
	Шаблон.Записать(ИмяФайла);
	ПриложениеВорд = Новый COMОбъект("Word.Application");
	ОбъектШаблон = ПриложениеВорд.Documents.Add(ИмяФайла);

        ОбъектШаблон.Application.DisplayAlerts =-1;
        ДоговорНомер = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(Данные.ContractNumber);
	ИмяФайла = "Договор поставки "+ДоговорНомер+" от " + Данные.ContractDate+".pdf";
	ФайлДляЗаписи = КаталогВременныхФайлов()+ИмяФайла;

        Попытка
		wdExportFormatPDF = 17;
		ОбъектШаблон.ExportAsFixedFormat(ФайлДляЗаписи, wdExportFormatPDF, 0, false, 0, 1, 1, 0, True, True, 0, True, True, False);
	Исключение
		Сообщить("Ошибка! Возможно номер договора содержит некорректные символы! Обратитесь к разработчику!");
	КонецПопытки;

//если без параметра 0 - всплывает вопрос о сохранении файла
ОбъектШаблон.Application.Quit(0);
Показать
2. Stref75 27.07.18 13:23 Сейчас в теме
я как-то так делаю - тихонько файлики в папочку складываются, ничего не открывается и не мелькает
&НаКлиенте
Процедура СформироватьДокументыWord(МассивСтруктурДанных);          
			
	 Макет = ПолучитьМакетСервер("ШаблонСоглашения");
	 й=1;
	 Для каждого СтруктураДанных Из МассивСтруктурДанных Цикл
		 Попытка  // пытаемся создать документ ворд
			 ПроцентВыполнения = 100 * й/ МассивСтруктурДанных.Количество();
			 Состояние("Создание документов Word...",  ПроцентВыполнения );
			 Word = Новый COMОбъект("Word.Application");
		 Исключение
			 ПоказатьОповещениеПользователя (  "Ошибка при запуске Microsoft Word: " + ОписаниеОшибки() );
			 Возврат;
		 КонецПопытки;
		 
		Попытка     // пытаемся сформировать файл ворд
					
			ИмяВременногоФайла = КаталогВременныхФайлов() + "Tmp_document.docx";
			Макет.Записать(ИмяВременногоФайла);
						
			ДокументШаблон = Word.Documents.ADD(ИмяВременногоФайла);

			/////

			тут документ заполняется
			
			//////
									
			
			ПолноеИмяФайла = ПутьСохраненияФайлов+ "\Трудовой Договор "+ФИО_Кратко+ ".docx";
					
			
			// Сохраняем шаблон как документ Word с расширением docx.
    		ДокументШаблон.SaveAs(ПолноеИмяФайла);
    		// Не забываем закрыть приложение Word.
    		ДокументШаблон.Application.Quit(0);
			
			
			
		Исключение
			// произошли ошибки
			// закрываем ворд без сохранения
			ТекстОшибки = ОписаниеОшибки();
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Произошли ошибки во время создания файла: "+ТекстОшибки;

			Сообщение.Сообщить(); 
			Word.Quit();  
			
		КонецПопытки;

		 
		 й=й+1;
	 КонецЦикла; 
	 
	Состояние("Создание документов Word...", 100 );
	
КонецПроцедуры
Показать
3. Timur.V 79 27.07.18 13:25 Сейчас в теме
Особенности работы COM-объектов Microsoft Office

Приложения Microsoft Office, имеющие метод Quit, могут требовать явного завершения своей работы вызовом этого метода. В основном, это касается использования этих приложений как COM-объектов во встроенном языке 1С:Предприятия, причем, как самих приложений, так и их компонент (например, Word.Document). В случае если используется компонента приложения, следует использовать такие свойства, как Application или Parent, поскольку метод Quit есть только у самих приложений.

 Перем obj, app, tmp;
    obj = Новый COMObject("Word.Document");
    tmp = obj.SpellingErrors;
    app = obj.Application;
    app.Quit();

На эту особенность работы COM-объектов Microsoft Office следует обратить внимание, если после завершения работы конфигурации, использующей такие объекты, приложения Microsoft Office (excel.exe, winword.exe и т.д.) остаются в памяти.
Milanick; Stref75; +2 Ответить
5. Milanick 27.07.18 14:14 Сейчас в теме
(3)
Приложения Microsoft Office, имеющие метод

Не то. Но спасибо, что напомнили об этой особенностью

(2) да, я видел этот код. В моем случае , нужно оч. много файлов обработать (вставить в колонтитул надпись), и тягать их из 1 места в другое, то ещё занятие .

Пока в ступоре....
7. Raskad 10 27.07.18 14:27 Сейчас в теме
Попробуйте:

Word.Documents.Close(истина);
Word.Application.Quit();
8. Milanick 27.07.18 14:33 Сейчас в теме
В этот коде, он открывает окно сохранения документа
9. Raskad 10 27.07.18 14:41 Сейчас в теме
(8) использовать без метода "Save"!
10. Milanick 27.07.18 14:55 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот