Имя: Пароль:
1C
 
COMОбъект("Word.Application") Зависает процесс WINWORD.EXE
,
0 Pilokarpios
 
27.07.17
16:45
Ребята помогите, 2017 год на дворе, а проблему либо не решили или я туплю.

Windows 2012 x64
1C сервер х64 (у юзера агента-службы есть права)

ЭТО КОД РАБОЧИЙ
&НаСервере
Процедура ОбновитьExcelОтображение()
    СомЕх = Новый COMОбъект("Excel.Application");
    Wrk = СомЕх.WorkBooks.Open(ПутьКФайлуНаСервере);
    ВремФ = ПолучитьИмяВременногоФайла(".html");
    Wrk.SaveAs(ВремФ,44);
    СомЕх.Quit();
    ПолеHTMLдок = ВремФ; //ПОКАЗЫВАЕТ ПРЕД ПРОСМОТР EXCEL всё хорошо!
КонецПроцедуры

ЭТОТ КОД НЕ ПАШЕТ
&НаСервере
Процедура ОбновитьWordОтображение()
       Word = Новый COMОбъект("Word.Application");
       Word.Documents.Open(ПутьКФайлуНаСервере); //ТУТ ЗАВИСАЕТ ПРОЦЕСС WINWORD.EXE и тишина
и так:
       Word.Application.Documents.Add(ПутьКФайлуНаСервере);
КонецПроцедуры

В настройках WORD в безопасности разрешили всё что можно.

ЗЫ
Word и Excel установлены! файлы xls и doc открываются.

Что делать подскажите люди добрые, копаем весь день.

Может проблема в настройке компонент, там для Excel настраивался запуск от текущего пользователя и папка "C:\Windows\SysWOW64\config\systemprofile\Desktop"

Спасибо за ответы.
1 Garykom
 
гуру
27.07.17
16:53
Ну попробуй поставить 64 битный Word (MS Office)... может даже поможет.

Но лучше выкинуть MS Office и заюзать другие решения для выполнения исходной задачи.
2 Масянька
 
27.07.17
16:53
(0) Если "ПутьКФайлуНаСервере" прописать (в лоб) - работает?
3 Pilokarpios
 
27.07.17
16:53
(1) Например?
4 Garykom
 
гуру
27.07.17
16:55
(3) задачу опиши
5 Garykom
 
гуру
27.07.17
16:57
"открыть файлик вордом на сервере" это не задача это "инструмент"

если инструмент не работает, то возьми другой
6 Pilokarpios
 
27.07.17
17:06
(2) ПутьКФайлуНаСервере = Строка: "D:\гребанныйфайл.doc" (4) Задача: Предпросмотр word документа в управляемой форме
7 Масянька
 
27.07.17
17:08
(6) Вот так
Процедура ОбновитьWordОтображение()
       Word = Новый COMОбъект("Word.Application");
       Word.Documents.Open( "D:\гребанныйфайл.doc");
открывает?
8 Garykom
 
гуру
27.07.17
17:10
Поле HTML документа + https://jsfiddle.net/picssel/vfu581c2/
9 Pilokarpios
 
27.07.17
17:10
(7) Нет конечно же, также зависает 1С и висит процесс WINWORD.exe, если процесс завершить, то отпускает 1С с неизвестной ошибкой
10 Garykom
 
гуру
27.07.17
17:11
(8)+ Или банально https://github.com/mwilliamson/mammoth.js
11 Garykom
 
гуру
27.07.17
17:13
12 Масянька
 
27.07.17
17:22
(9) мNewDoc = Word.Documents;
    Word.Visible = 1;
- сам word открывает?
13 Pilokarpios
 
27.07.17
17:27
(8) <a class="word" href="//docs.google.com/gview?
url=file://D:/гребанныйфайл.doc&embedded=true">Open a Word document in Fancybox</a>

/////
400. That’s an error.

The requested URL was not found on this server. That’s all we know.
/////
14 Pilokarpios
 
27.07.17
17:28
(12) Нет не открывает, зависает
15 Garykom
 
гуру
27.07.17
17:32
(13) поставь апач и расшарь путь к doc чтобы открывался через "url=http://...";
16 Garykom
 
гуру
27.07.17
17:32
(15) браузер по умолчанию не имеет доступа к файловой системе напрямую, только по http
17 Pilokarpios
 
27.07.17
17:33
(15) IIS8 снести? )) Может есть варианты по WORD?
18 Garykom
 
гуру
27.07.17
17:34
(17) ну настрой IIS8 какая нафик разница, чтобы можно было файлики  из папки через http получать
19 Вафель
 
27.07.17
17:34
но зачем через ком? почему не просто
ЗапуститьПриложение? как в БСП
20 Garykom
 
гуру
27.07.17
17:34
(17) В курсе сколько будет стоит лицензия на WORD чтобы использовать ее на сервер так как вы хотите?
21 Pilokarpios
 
27.07.17
17:37
(20) А не онлайн варианты есть?
22 Pilokarpios
 
27.07.17
17:38
(19) НЕ ВАРИАНТ, мне нужен:
ВремФ = ПолучитьИмяВременногоФайла(".html");
Word.SaveAs(ВремФ,8);
и показать предпросмотр HTML на управляемых формах.
23 Вафель
 
27.07.17
17:40
24 Pilokarpios
 
27.07.17
17:40
(18) Идея отличная, обязательно возьму на заметку, спасибо. Но что же с долбаным word?
25 Cyberhawk
 
27.07.17
17:41
"Задача: Предпросмотр word документа в управляемой форме" // Это не задача, это какая-то куита
26 Cyberhawk
 
27.07.17
17:42
Конечную цель давай
27 Вафель
 
27.07.17
17:42
(25) почему же?
28 Cyberhawk
 
27.07.17
17:42
(27) Не дает понимания цели
29 Pilokarpios
 
27.07.17
17:43
(25)(26) (28) Это не каммент, это какает о куита, я написал цель, что еще надо написать? Хватит флудить
30 Cyberhawk
 
27.07.17
17:43
(29) Где ты цель написал?
31 Вафель
 
27.07.17
17:44
(29) показать содержимое файла, без установленного ворда
32 Garykom
 
гуру
27.07.17
17:45
(31) Не проще все документы при сохранении в некий каталог автоматом в .html переводить с тем же именем?
33 Garykom
 
гуру
27.07.17
17:47
(32)+ Кста на .Net есть прекрасные средства для работы с файловой системой и ее событиями, даже изменения файликов можно отслеживать и пересоздавать "веб превью".
34 Pilokarpios
 
27.07.17
17:49
(32)(33) Тоже вариант интересный, но тема поста, про то, что word вешается.
35 timurhv
 
27.07.17
17:50
(0) В журнале событий винды должно все быть написано.
36 Вафель
 
27.07.17
17:53
(34) Нужно одновременно прорабатывать план Б
37 Вафель
 
27.07.17
17:53
кстати у ворда же нужно отключать всякие диалоги
38 Garykom
 
гуру
27.07.17
17:53
(34) Да мы поняли что если привыкли микроскопом гвозди забивать то уже никак...
-Ой у меня микроскоп не работает
-Так он же электронный, а не советский чугунный
39 Pilokarpios
 
27.07.17
17:55
(38) Да причем тут это, зависает WORD, мне млять что теперь все бросить и перевести контору на LINUX, хватит уже, противно слушать, умные все такие.
40 Масянька
 
27.07.17
17:57
(39) ИМХО, не в word'е проблема.
И нервничать не надо... Все такие нервные...
41 Cyberhawk
 
27.07.17
18:00
Автор прикован к какой-то задаче и не может подняться над ней и подумать о цели
42 Garykom
 
гуру
27.07.17
18:00
(39) У тебя ответ прямо в вопросе, там где про excel
43 Масянька
 
27.07.17
18:01
(41) У него предвзятое отношение к word'у :)))))))))
44 Pilokarpios
 
27.07.17
18:02
(41) Тему почитай, если непонятно, то вряд ли чем то поможешь.
45 Pilokarpios
 
27.07.17
18:04
(42) если про Компоненты x32 и x64, то проблема возникает на этом этапе: Word = Новый COMОбъект("Word.Application").
Но COM же срабатывает и WINWORD.EXE заводиться, значит не в компонентах дело.
46 DomovoiAtakue
 
27.07.17
18:05
(0)Может вылазит предупреждение и прячется на задний план, в процессах ничего еще вордовского нет?
47 Cyberhawk
 
27.07.17
18:06
48 Pilokarpios
 
27.07.17
18:08
(47) Красавчик, иди в школу работать учителем.
49 Garykom
 
гуру
27.07.17
18:11
(45) Зайди на сервер от юзера от которого выполняется процесс "сервера 1С" и попробуй открыть Word.

Очень удивишься...
50 Имитирующий работу
 
27.07.17
18:11
(48) у метода Open больше одного параметра, программистушко
51 Garykom
 
гуру
27.07.17
18:14
(50) Не в этом проблема, хотя может помочь если на запись нет прав открыть.
52 Вафель
 
27.07.17
18:15
(49) но ексель то работает
53 Garykom
 
гуру
27.07.17
18:15
(52) "Может проблема в настройке компонент, там для Excel настраивался запуск от текущего пользователя и папка "C:\Windows\SysWOW64\config\systemprofile\Desktop" "
54 Cyberhawk
 
27.07.17
18:19
(48) Я уже выполнил эту роль благодаря тебе, ведь ты уже открыл ссылку
55 Pilokarpios
 
27.07.17
18:53
(49) Все работает. Сервер 1с работает от того же юзера, от которого я пробую.
56 Pilokarpios
 
27.07.17
18:58
(55) Всмысле "Все работает" это открываются Excel и Word файлы.
57 Pilokarpios
 
27.07.17
19:59
Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.

https://support.microsoft.com/ru-ru/help/257757/considerations-for-server-side-automation-of-office
58 Fram
 
27.07.17
20:06
(56) попробуй свой код засунуть в обработку с обычной формой и открыть в том сеансе с видимым вордом.
59 Pilokarpios
 
27.07.17
20:16
(58) Спасибо за совет, но не буду тратить время. Сегодня перерыл страниц 200 с подобными темами, я так и не увидел рабочих решений с предпросмотром word документов через управляемые формы. Excel завёлся, как и во многих темах, что мне попадались Что качается word, не видел рабочего решения, только если на стороне клиента колдовать, этот вариант не устраивает.
60 Pilokarpios
 
27.07.17
20:24
(58) Проверил на обычных формах, тоже самое.
61 Garykom
 
гуру
27.07.17
20:31
http://1c.ruboard.ru/public/568913/
v8: Ошибка получения объекта COM при переходе на клиент-серверный вариант работы

Т.е. для сервера 64 (система и 1С) и офиса 32 трабла решается (возможно) через создание папочек и регистрацию СОМ+
62 Garykom
 
гуру
27.07.17
20:34
(61)+ Но с учетом что сервер 1С нынче модно на линуксах и с потсгресом юзать или даже в облаках... советую выкинуть офис и сделать нормальное решение.
63 Pilokarpios
 
27.07.17
20:35
Может есть знатоки?

cmd: "mmc comexp.msc /32" и "mmc comexp.msc /64"
Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM:
"Microsoft Excel Application" имеется, а "Microsoft Word Application" нету, может он по другому называется или его нужно добавить?
64 Pilokarpios
 
27.07.17
20:36
(62) Я за хорошее решение! Но сейчас тупо проблема стоит именно в WORD и COM
65 Pilokarpios
 
27.07.17
20:38
(61) я сегодня на эту статью натыкался раза 4, там есть кусок кода:
// этот код точно вызовет экземпляр COM нужной разрядности, в нашем случае x64
Word = Новый COMОбъект("Word.Application");
Word.Displayalerts = 0;
ДокументН = Word.Application.Documents.Add();
ДокументН.SaveAs(ВремФайл,0);                
Word.Quit();

который у меня не работает ))
66 Cyberhawk
 
27.07.17
20:41
(65) Так у тебя не такой код приведен, поэтому и не работает. В ветке тебе уже намекнули на важную строку.
67 Имитирующий работу
 
27.07.17
20:41
(59) > так и не увидел рабочих решений

А ты не пробовал не искать куски кода, а пытаться понять почему оно не работает?
68 Garykom
 
гуру
27.07.17
20:42
(66) Word.Displayalerts = 0;
69 Garykom
 
гуру
27.07.17
20:46
Все же самое правильное то поднять в сети (если нет желания пользоваться кучей онлайн конвертеров doc(x)2html) свой конвертер из офиса в html и заюзать его из 1С.

Лучше всего в момент когда файлы офиса засовываются/прикрепляются к 1С, банально отправляем файлик в сервис и конвертированный в html ответ прицепляем куда нуна.
70 Pilokarpios
 
27.07.17
20:49
(68)
Word = Новый COMОбъект("Word.Application");
Word.Displayalerts = 0;
Word.Documents.Open("D:\гребанныйфайл.doc");

тоже самое, зависает процесс WINWORD.EXE, не грузит процессор, просто висит. В ручную файл открывается. если процесс был грохнут, при ручном открытии пишет, что пред открытие было сбойным.

(69) Сервер закрыт для онлайн "гуляний".
71 Fram
 
27.07.17
20:49
(60) а окно Word открылось? Что там?
72 Pilokarpios
 
27.07.17
20:52
(71) Н и ч е г о не открылось, тупо зависает процесс winword, грешу на разрядность и настройки компонент DCOM. DCOM уходят в прошлое, да знаю.
73 Pilokarpios
 
27.07.17
20:53
(72) хотя если бы это было так, то COM объект не создался бы, а он создается и его можно пощупать в отладчике, после:Новый COMОбъект("Word.Application")
74 Pilokarpios
 
27.07.17
20:57
(69) Имеется ввиду поднять сервис в сети с рабочим word и через него (через webсервис) конвертировать файлы в html, тоже вариант, но игра не стоит свеч, я думал всё проще с word, т.к. с Excel всё взлетело.
75 Cyberhawk
 
27.07.17
20:58
Пропиши вижимость Ворда сразу после создания СОМ-объекта
76 Pilokarpios
 
27.07.17
21:01
(75)
MSWord = Новый COMОбъект("Word.Application");
работает: MSWord =СОМОбъект...
MSWord.Visible = Истина;
Процесс зависает...
дальше даже кода нет
77 timurhv
 
27.07.17
21:09
(76) Ты старые экземпляры в диспетчере убил?
Журнал ошибок в Windows смотрел? Что пишет?
78 Cyberhawk
 
27.07.17
21:10
Может у конфы не разрешена модальность. В попытку завернуть, проверить исключение.
Ну и попробовать через Documents.add
и активацию конкретного документа
79 Lama12
 
27.07.17
21:16
Про драйвер принтера уже говорили?
80 Pilokarpios
 
27.07.17
21:17
(65) {Форма.Форма.Форма(132)}: Ошибка при вызове метода контекста (Add)
    ДокументН = Word.Application.Documents.Add();
по причине:
Произошла исключительная ситуация (Microsoft Word): Не удается запустить событие.
81 Pilokarpios
 
27.07.17
21:18
(77) Естественно убил
82 Pilokarpios
 
27.07.17
21:20
(77) Ошибки в журнале только после насильногозавершения процесса, ничего там нет.
83 Pilokarpios
 
27.07.17
21:23
(79) Нет
84 Garykom
 
гуру
27.07.17
21:29
(70) >Сервер закрыт для онлайн "гуляний".

ну так на этом же сервере и поднять свою веб-сервису
85 Pilokarpios
 
27.07.17
21:34
(84) Я так понимаю, сервис не будет (на этом же сервере) юзать Новый COMОбъект("Word.Application"), есть какой то волшебный метод msword *.doc файл конвертировать в html без онлайн конверторов?
86 Garykom
 
гуру
27.07.17
21:35
(74) Не обязательно с MS Word, можно что угодно вплоть до LibreOffice или любого рабочего решения.
Типа https://github.com/mirkonasato/pyodconverter
87 Garykom
 
гуру
27.07.17
21:35
(85) угу
88 Garykom
 
гуру
27.07.17
21:38
(86)+ или даже банально https://zalinux.ru/?p=460
89 Pilokarpios
 
27.07.17
21:45
(86) т.е. поднять сервис, который будет чисто конвертацией заниматься через внешний онлайн сервис?
90 Garykom
 
гуру
27.07.17
21:46
(89) оно локальное

короче, прочитай (88) и используй ЗапуститьПриложение или КомандаСистемы
91 Pilokarpios
 
27.07.17
21:49
(90) Спасибо тебе добрый человек, ты меня направил в нужном направлении.
92 Pilokarpios
 
27.07.17
21:49
(90) а насчет ЗапуститьПриложение или КомандаСистемы отдельное спасибо
93 Имитирующий работу
 
27.07.17
23:33
(92) Прошло 4 часа после (19). Эхэх...
94 Pilokarpios
 
01.08.17
16:08
(93) прошло 4 дня, эх. Мне этот вариант сразу же не нужен был. (92) САРКАЗМ!!!
95 lodger
 
01.08.17
16:36
так кто дурак то в итоге?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан