Ошибка Word при формировании

1. 11 20.11.20 09:51 Сейчас в теме
Здравствуйте. Формирую файл Word (ActiveDocument) на сервере, сохраняю в нужную папку, затем открываю на клиенте. Но база файловая и при попытке использовать
Word.Application.Quit();
закрываются все документы Word на клиенте. Попробовал через
Документ.Close();
и вроде как всё хорошо, но так работает только в режиме отладки. Если режим отключить, то 1С вываливается в ошибку и закрывается (Может причина в том, что использую ДлительныеОперации?). Подскажите, пожалуйста, как решить такую проблему?
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. the1 672 20.11.20 10:26 Сейчас в теме
Попробуй
Word = Неопределено;
Если все документы на сервере сохранены и экземпляр Word больше не нужен, то должно сработать
3. soft_wind 20.11.20 11:14 Сейчас в теме
вот пример нормально закрывает, правда активный документ, но можно допилить выбор
Прикрепленные файлы:
Тест_ОткрытьЗакрытьВорд.epf
4. SergVB 11 20.11.20 11:47 Сейчас в теме
(2) Не работает.

(3) Та же самая проблема, в режиме отладки работает, без - 1с закрывается с ошибкой.
5. ZloyProger 8 20.11.20 12:07 Сейчас в теме
(4) А с какой ошибкой закрывается-то? И кстати без разницы файловая/клиент-серверная (в последнем случае только в случае УФ заморочки с клиент-серверной архитектурой и передачей файла) одинаково код отрабатывать должен. И что есть режим отладки, не совсем понял? Запуск из под конфигуратора что ли?).
ЗЫ. И противоречишь сам себе - файл формируешь на сервере, а база файловая) Или формируешь в одной базе, а открываешь в другой? В общем код как формируешь/открываешь тоже неплохо бы увидеть.
7. SergVB 11 20.11.20 12:15 Сейчас в теме
(5) (6) Прошу прощения, вот скрин. Сначала выходит серенькое окошко, но оно быстро закрывается. Текст ошибки из журнала событий Windows:
Имя сбойного приложения: 1CV8C.exe, версия: 8.3.16.1296, отметка времени: 0x5e709f64
Имя сбойного модуля: ole32.dll, версия: 6.1.7601.24537, отметка времени 0x5dce0da9
Код исключения: 0xc0000005
Смещение ошибки: 0x000841d6
Идентификатор сбойного процесса: 0x2c4
Время запуска сбойного приложения: 0x01d6bf1d31bc5348
Путь сбойного приложения: C:\Program Files\1cv8\8.3.16.1296\bin\1CV8C.exe
Путь сбойного модуля: C:\Windows\system32\ole32.dll
Код отчета: 809f4f16-2b10-11eb-924e-f46d04459f6e
Прикрепленные файлы:
6. UberElder 20.11.20 12:10 Сейчас в теме
Скриншот ошибки в студию пожалуйста!
8. ZloyProger 8 20.11.20 12:21 Сейчас в теме
(7) Разрядность какая у 1с/word? Попробуй офис переустановить, мб криво встал (очень похоже что dll-ка глючит). Кстати документ сохраняешь и потом открываешь не модифицируется ли он? И при закрытии пытается изменения сохранить, но вылетает. К
9. SergVB 11 20.11.20 12:24 Сейчас в теме
(8) Проверено на двух системах (Win 7 х32 и Win 10 x64). Одинаково.
не модифицируется ли он?
нет
И при закрытии пытается изменения сохранить, но вылетает
нет
1С х32
10. SergVB 11 20.11.20 12:27 Сейчас в теме
(9) В общем модуле:
Макет= Документы.Блабла.ПолучитьМакет("МакетВорда");

	Попытка
		MSWord = Макет.Получить();

		Word = MSWord.Application;
		Word.Displayalerts = 0;
		//MSWord.Application.Visible = 0;
		Документ = Word.Documents(1);
		//Документ.Activate();
		

		ДлительныеОперации.СообщитьПрогресс(, "Блабла");
		
		
		Путь = Объект.КаталогПротокола;
		ПутьКФайлу = СохранениеФайла.СохранениеФайлаНаСервере(Параметры);

		Возврат ПутьКФайлу;
		
	Исключение
		
		// Запись события в журнал 
		
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
		УровеньЖурналаРегистрации.Ошибка,,,
		ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		ВызватьИсключение;
		Word.Application.Quit();	
	КонецПопытки;
Показать
12. SergVB 11 20.11.20 12:32 Сейчас в теме
(10) Все это вызывается из модуля формы:
&НаКлиенте
Процедура Сформировать()
Попытка
			ДлительнаяОперация = СформироватьНаСервере();
			
			ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
			Оповещение = Новый ОписаниеОповещения("ЗавершениеФормированияДокумента", ЭтотОбъект);
			ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
			ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
			ПараметрыОжидания.ВыводитьСообщения = Истина;
			ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Формируется файл .
			|Тип: Стандартный'");
			
			ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
			
		Исключение
			СобытиеИсключение ();
		КонецПопытки;
КонецПроцедуры

&НаСервере
Функция СформироватьНаСервере()
	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
	Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "ФормированиеФайлаВорд.СформироватьНаСервере", Объект.Ссылка ); 
	//Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "ФормированиеФайлаВорд.СформироватьНаСервере",Объект.Ссылка );
КонецФункции

&НаКлиенте
Процедура ЗавершениеФормированияДокумента (Результат, ДополнительныеПараметры) Экспорт
	
	
	Если Результат = Неопределено Тогда // Пользователь отменил задание.
		Возврат;
	КонецЕсли;
	
	Если Результат.Статус = "Ошибка" Тогда
		ВызватьИсключение Результат.ПодробноеПредставлениеОшибки;
	КонецЕсли;
	
	Файл = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
	
	ЗапуститьПриложение("""" + Файл + """");

	УдалитьИзВременногоХранилища(Результат.АдресРезультата);

КонецПроцедуры

Показать
11. vv2 20.11.20 12:31 Сейчас в теме
А если так ?
Документ.Close(-1,1);
13. SergVB 11 20.11.20 12:35 Сейчас в теме
(11) Та же ошибка. Программа закрывается.
14. EVKash 9 20.11.20 12:44 Сейчас в теме
(13) платформа какая? увидел...
на другой пробовали?
15. SergVB 11 20.11.20 12:48 Сейчас в теме
(14) Пробовал 8.3.16 (несколько релизов), 8.3.15 x64. Результат одинаковый.
16. ZloyProger 8 20.11.20 12:53 Сейчас в теме
(15) Я правильно понял - если запускаешь из-под конфигуратора в режиме отладки - работает, если просто клиента запускаешь - вылетает?
17. SergVB 11 20.11.20 12:54 Сейчас в теме
18. SergVB 11 20.11.20 12:56 Сейчас в теме
(16) В режиме отладки не вызывается обработчик ожидания, может в этом дело?
19. ZloyProger 8 20.11.20 12:58 Сейчас в теме
(17) Попробуй убери длительные операции, переделай на обработку ожидания и проверь, если взлетит, значит в эту сторону копай.
20. SergVB 11 20.11.20 13:15 Сейчас в теме
(19) Сделал
&НаКлиенте
Процедура Сформировать()
Файл =  СформироватьНаСервере();
ЗапуститьПриложение("""" + Файл + """");
КонецПроцедуры

&НаСервере
Функция СформироватьНаСервере()
	Файл = ФормированиеФайлаВорд.СформироватьНаСервере (Объект.Ссылка);
	Возврат Файл;
КонецФункции
Показать
Так работает. Но в этом случае пользователь ничего не сможет сделать - ни взаимодействовать с интерфейсом, ни отменить выполнение.
21. SergVB 11 24.11.20 07:06 Сейчас в теме
Ни у кого больше нет никаких мыслей?
Оставьте свое сообщение
Вопросы с вознаграждением