1C и word. Закрытие документа word c сохранением без диалоговых форм
Добрый день.
Столкнулся с таким вопросом:
При выполнении кода, система подвисает из за word , который вызывает диалоговое окно запроса на сохранение. Собственно, а как сделать чтобы не спрашивал. Тупо сохранил в файл молча :)
Столкнулся с таким вопросом:
&НаКлиенте
Процедура ОбработатьФайл(ПутькФайлу)
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 , который вызывает диалоговое окно запроса на сохранение. Собственно, а как сделать чтобы не спрашивал. Тупо сохранил в файл молча :)
Найденные решения
Вот рабочий код, нашел
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();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот рабочий код, нашел
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();
Показать
(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);
Показать
я как-то так делаю - тихонько файлики в папочку складываются, ничего не открывается и не мелькает
&НаКлиенте
Процедура СформироватьДокументы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 );
КонецПроцедуры
Показать
Особенности работы COM-объектов Microsoft Office
Приложения Microsoft Office, имеющие метод Quit, могут требовать явного завершения своей работы вызовом этого метода. В основном, это касается использования этих приложений как COM-объектов во встроенном языке 1С:Предприятия, причем, как самих приложений, так и их компонент (например, Word.Document). В случае если используется компонента приложения, следует использовать такие свойства, как Application или Parent, поскольку метод Quit есть только у самих приложений.
На эту особенность работы COM-объектов Microsoft Office следует обратить внимание, если после завершения работы конфигурации, использующей такие объекты, приложения Microsoft Office (excel.exe, winword.exe и т.д.) остаются в памяти.
Приложения 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 и т.д.) остаются в памяти.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот