Сохранение документа Word в формате PDF средствами 1С Предприятие 8.3 (Word 2007)

1. IfYouWant_YouCan 09.06.18 12:24 Сейчас в теме
Всем привет! Собственно весь вопрос в сабже, у кого то был опыт? судя по инфе из MSDN и других форумов нужно всего лишь у объекта
документWord
вызвать метод
SaveAs("D:\1C\test12312.PDF",17);
где второй параметр обозначает вид формата, 17 означает PDF, но этот метод у меня работает только с одним параметром (путь к файлу), со вторым параметром все вываливается в ошибку:

Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Ошибка команды

Может кто то сталкивался с такой проблемой.

на всякий приведу пример кода:


	// Запускаем приложение и открываем файл
	Попытка
		MSWord = Новый COMОбъект("Word.Application");
	Исключение
		Сообщить("Ошибка при попытке создать объект ""MS Word""!" + Символы.ПС + 
				 "Возможно приложение ""MS Word"" не установлено или установлено неправильно.", СтатусСообщения.Внимание);
		Возврат;
	КонецПопытки; 

	ФайлWord = ВнешняяФормаWord.ХранилищеВнешнейОбработки.Получить();
	
	UID = Новый УникальныйИдентификатор;
	
	ФайлWord.Записать(КаталогВременныхФайлов()+UID+".doc");

	Попытка
	 	WordДокумент = MSWord.Documents.Open(КаталогВременныхФайлов()+UID+".doc",, -1);
	Исключение
	    Сообщить("Ошибка при попытке открыть файл (" + СокрЛП(КаталогВременныхФайлов()+UID+".doc") + ")!" + Символы.ПС + 
				 "Возможно имя файла указано не верно или указан файл другого формата.", СтатусСообщения.Внимание);
		Возврат;
	КонецПопытки;

		RngWord = MSWord.ActiveDocument.Range();
		RngWordCol = MSWord.ActiveDocument.Sections(1).Footers(1).Range();
		RngWordHeadCol = MSWord.ActiveDocument.Sections(1).Headers(1).Range();
		ActiveDoc = MSWord.ActiveDocument;
		Замена = RngWord.Find; 
		Замена.ClearFormatting();
		Замена.Forward = Истина;
		
		ЗаменаКол = RngWordCol.Find;
		ЗаменаКол.ClearFormatting();
		ЗаменаКол.Forward = Истина;
		
		ЗаменаВерхКол = RngWordHeadCol.Find;
		ЗаменаВерхКол.ClearFormatting();
		ЗаменаВерхКол.Forward = Истина;
		
		Если Замена.Execute("{Дата}",,,,,,,,,"{Дата}", 2) Тогда
			Замена.Execute("{Дата}",,,,,,,,,СокрЛП(Формат(ДокументОбъект.Дата,"ДЛФ=DD")), 2);
		КонецЕсли;

                //Вот тут проблема
		WordДокумент.SaveAs("D:\1C\test12312.PDF",17);
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
9. aka Любитель XML 09.06.18 13:23 Сейчас в теме +0.25 $m
В 2007 ворде нет возможности сохранить файл в PDF формате. Установите версию 2010. Вот ссылка: https://www.mista.ru/topic.php?id=741521
IfYouWant_YouCan; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Healer 1 09.06.18 12:33 Сейчас в теме
Проверьте, есть ли путь "D:\1C\" на сервере предприятия (то есть там, где запускается СОМ-объект) и есть ли у пользователей, из-под которого запущен сервер 1С предприятия и СОМ-объект права на этот каталог.
7. IfYouWant_YouCan 09.06.18 13:18 Сейчас в теме
(2) с этим все хорошо) т.к. без второго параметра он сохраняет файл, но увы там просто docx с расширением pdf
3. Healer 1 09.06.18 12:34 Сейчас в теме
Также убедитесь, что символ "С" в пути тот, что Вы думаете :-) То есть просто скопируйте путь из файлового менеджера в код.
4. Healer 1 09.06.18 12:42 Сейчас в теме
Вообще СОМ-объект это архаичная тоска. Предлагаю Вам использовать встроенные методы платформы, например прямое сохранение табличного документа в документ формата PDF.
5. Healer 1 09.06.18 12:45 Сейчас в теме
То есть при записи табличного документа достаточно указать вот так:

ТабДок.Записать("file.docx", ТипФайлаТабличногоДокумента.DOCX);
ТабДок.Записать("file.pdf", ТипФайлаТабличногоДокумента.PDF);
8. IfYouWant_YouCan 09.06.18 13:19 Сейчас в теме
(5)
азать вот та


нет, мне нужно работать именно с шаблоном Word
6. Healer 1 09.06.18 12:52 Сейчас в теме
То есть формируете нормальный табличный документ печатной формы и сохраняете его потом хоть в формате "PDF", хоть в "MS Word".
9. aka Любитель XML 09.06.18 13:23 Сейчас в теме +0.25 $m
В 2007 ворде нет возможности сохранить файл в PDF формате. Установите версию 2010. Вот ссылка: https://www.mista.ru/topic.php?id=741521
IfYouWant_YouCan; +1 Ответить
10. dka80 21 09.06.18 13:53 Сейчас в теме
ДокументВорд.ExportAsFixedFormat(времФайл , 17);
shreka; DmitryR; Sekator; +3 Ответить
12. IfYouWant_YouCan 09.06.18 14:21 Сейчас в теме
(10) Данные метод работает только при установленной компоненте "сохранение в формате PDF или XPS"
14. Sekator 29.01.20 13:15 Сейчас в теме
(10)
Спасибо! Ваш коммент позволил мне сэкономить время :)
11. Xershi 1553 09.06.18 13:58 Сейчас в теме
Не указана версия
MSWord = Новый COMОбъект("Word.Application")

Укажите версию явно последнего ворда, он должен стоять на сервере и вопрос решите!
13. IfYouWant_YouCan 09.06.18 14:22 Сейчас в теме
(11) документ формируется на клиенте, на клиенте стоит одна версия ворда
15. timurhv 22.05.20 19:06 Сейчас в теме
Может кому поможет костыль, так работает сохранение docx в pdf (необходимо скопировать файл во второй временный и уже его открывать и сохранять в pdf) Office 2013, 365:

ФайлИсходящий = ПолучитьИмяВременногоФайла("pdf");
ФайлВременныйDocx1 = ПолучитьИмяВременногоФайла("docx");
ФайлВременныйDocx2 = ПолучитьИмяВременногоФайла("docx");
ДвоичныеДанные.Записать(ФайлВременныйDocx1);
КопироватьФайл(ФайлВременныйDocx1, ФайлВременныйDocx2);
MSWord = Новый COMОбъект("Word.Application");
MSWord.Visible = Ложь;
ДокВорда = MSWord.Documents.Open(ФайлВременныйDocx2);
ДокВорда.SaveAs(СтрЗаменить(ФайлИсходящий, ".pdf", ""), 17);
ДокВорда.Close(0);
MSWord.Application.Quit();
...
УдалитьФайлы(ФайлИсходящий);
УдалитьФайлы(ФайлВременныйDocx1);
УдалитьФайлы(ФайлВременныйDocx2);
16. Dskozin 26 12.02.21 17:20 Сейчас в теме
(15) А какая версия платформы? Вызов происходит на клиенте или сервере?
17. timurhv 13.02.21 00:49 Сейчас в теме
(16) Вызов на сервере. Платформа 8.3.13, возможно это ошибка и ее уже исправили, либо в системном профиле что-то блокировалось. В тестовой среде разработки без костылей все работало.
Оставьте свое сообщение

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