Вход | Регистрация

Информационные технологии :: Администрирование

ОбъектWord.Documents.Add() - ошибка (только на сервере приложений)

ОбъектWord.Documents.Add() - ошибка (только на сервере приложений)
Я
   Dmitriy_ Kolesnikov
 
03.11.17 - 00:39
Сразу скажу - на файловой базе в Windows 7 этот код работает корректно.
Итак, есть: W2016Server + сервер приложений 8.3.10.2580 + самописный документ, в котором есть строчка

ДокументВорд = ОбъектВорд.Documents.Add(ИмяФайлаПаспортаЗаявки);

Сразу говорю - файл я проверял вот так:

Тест = Новый Файл("c:\temp_pm\test.docx");
Если Тест.Существует() Тогда

- он существует, и сервер его может прочитать. С правами доступа к папкам всё ОК.

На сервере установлен Office 2013 (причем я ставил и 32-битный, и 64-битный), COM-компонент ручками зарегистрировал, поэтому строчка

ОбъектВорд = Новый COMОбъект("Word.Application");

теперь выполняется без ошибок. В отладчике объект виден.

Так вот, спотыкаемся на строчке

ДокументВорд = ОбъектВорд.Documents.Add(ИмяФайлаПаспортаЗаявки);

Если файл имеет расширение DOC - ошибка такая:

{Документ.дкЗаявкаНаПроект.МодульОбъекта(77)}: Ошибка при вызове метода контекста (Add): Произошла исключительная ситуация (Microsoft Word): Ошибка в Word.

Если файл имеет расширение DOCХ - ошибка чуть другая:

{Документ.дкЗаявкаНаПроект.МодульОбъекта(79)}: Ошибка при вызове метода контекста (Add): Произошла исключительная ситуация (Microsoft Word): Приложению Word не удалось прочитать документ. Возможно, он поврежден.
Попробуйте выполнить следующие действия:
* Откройте файл с помощью команды ''Открыть и восстановить''.
* Откройте файл с помощью конвертера резервных копий.

Я уже в отчаянии, целый день мучаюсь.
Сборки Офиса 2013 - от Кролика, с самыми последними обновлениями, сами понимаете, это бренд, здесь всё пучком. (На Win7 с файловой базой, где всё работает - такая же). Майкрософту я доверяю меньше, но завтра-таки попробую поставить c оригинального образа RTM. Интуиция подсказывает, что не взлетит.

Подскажите, что ещё можно попробовать проверить?
 
 
   Сергиус
 
1 - 03.11.17 - 01:24
А если попробовать зайти на сервер и вручную открыть данный файл? Открывается нормально и содержимое отображает?
   Сергиус
 
2 - 03.11.17 - 01:26
[Сборки Офиса 2013 - от Кролика, с самыми последними обновлениями, сами понимаете, это бренд, здесь всё пучком. (На Win7 с файловой базой, где всё работает - такая же). Майкрософту я доверяю меньше, но завтра-таки попробую поставить c оригинального образа RTM]

Достаточно спорное утверждение. Я бы больше доверял оригинальному дистрибутиву, чем какой-то сборке, из которой вполне могли повыкидывать "ненужные" вещи.
   h-sp
 
3 - 03.11.17 - 01:34
(0) попробуйте другую папку. c:\temp_pm\  - очень сомнительное место, вряд ли там откроет файл ворд.
   Dmitriy_ Kolesnikov
 
4 - 03.11.17 - 06:46
(1) конечно, открывает и отображает :) Я же не первый день замужем. И даже ЗапуститьПриложение(ИмяФайла), я уверен, будет работать.
(3) и папка эта - не первая, до неё я использовал подкаталог во временной папке (пробовал разные). Разумеется, права доступа - всем на всё.

Ещё раз повторю, что на локальном компьютере с W7 при такой же структуре папок и том же дистрибутиве Офиса (только без сервера приложений) всё работает.

Мне кажется, подвох в Windows 2016.
Другой вариант - в сервере приложений.
Третьего не дано.
   arsik
 
5 - 03.11.17 - 09:02
(4) Подвох возможно кроется в битности офиса, 1С.
Допустим офис 64x, а 1С 32x и наоборот.
   v77
 
6 - 03.11.17 - 09:05
нафиг вам этот офис вообще уперся. распаковал, засунул в xml чо хочешь, запаковал и все дела. быстро, дешево и сердито.
   DOSS_S
 
7 - 03.11.17 - 09:30
Курить "профиль безопасности" в программе "Администрирование серверов 1С Предприятия". По умолчанию использование COM на сервере 1С запрещено. Не советую работать с вордом екселем и тд. на сервере. Зависнет ворд вместе с ним 1с сеанс, что будете делать?
   Сияющий в темноте
 
8 - 03.11.17 - 09:46
попробуйте написать сценарий и из него управлять вордлм,а уже этот сценарий запустите из 1ц,если что-то пойдет не так можно убить сценарий и ворд из самой 1с
а сервер,кстати,обычно 64-битный
   arsik
 
9 - 03.11.17 - 10:16
(8) Зачем такой изврат, можно просто фоновым заданием, мне кажется.
   Dedal
 
10 - 03.11.17 - 11:08
(4) Подвохов там масса. Начиная от того под кем выполняется. Если ушло на сервер значит выполняется под серверным userV8 значит у него должен быть доступ к dcom объекту. Лезешь в dcom офиса и выдаешь ему там все права.

Но лучше сделать по другому. docx это упакованные в zip xml. на просторах интернета есть уже готовый код. Также реализацию и можно посмотреть в 1С Договорчики.

Фактически docx распаковывается, в нужном xml правится, пакуется обратно. Сам понимаешь никаких проблем с COM и офис не нужен.
 
 Рекламное место пустует
   Dmitriy_ Kolesnikov
 
11 - 03.11.17 - 11:14
(5) изначально офис был 32-битный и была ошибка при создании ком-объекта:
ОбъектВорд = Новый COMОбъект("Word.Application");
Но я вручную создал коннектор (по инструкции), и ошибка исчезла. Более того, как сказано в (0), я снес 32-битный Офис и поставил 64-битный - это ничего не изменило.

(6) а ссылку? У меня 15 файлов, часть в DOCX, часть в HTML, надо все их упихать в один. Я делаю это с помощью метода InsertFile.

(7) Благодарю, сейчас почитаю про эти профили. Похоже, собака зарыта именно здесь.

(10) пользователю usr1cv8 уже выданы везде все права, в том числе в COM+.

Насчет XML и ZIP - это интересно, но на будущее. Я уже написал код, который быстро работает на файловой базе. Теперь задача - заставить его выполняться на сервере.
   v77
 
12 - 03.11.17 - 11:20
(11) "а ссылку?" я писал про XML и ZIP
   Dedal
 
13 - 03.11.17 - 11:36
(11) В самом объекте dcom дал права?

Администрирование ? Службы компонентов ? *** ? Настройка DCOM ? Документ Microsoft Word 97–2003 ? безопасность.
   Филиал-msk
 
14 - 03.11.17 - 11:53
(0) Сборки Офиса 2013 - от Кролика, с самыми последними обновлениями, сами понимаете, это бренд

Кто все эти люди?
   v77
 
15 - 03.11.17 - 12:03
(14) уголовники
   Dmitriy_ Kolesnikov
 
16 - 09.11.17 - 17:05
(13) конечно
(14) весьма уважаемые люди. Робин Гуды наших дней.
(15) руководствуясь вашей логикой, уголовниками можно обозвать 99,9% граждан России, пользующихся компьютерами.
   Филиал-msk
 
17 - 09.11.17 - 17:07
(16) Обиделся, уголовник?
   Dedal
 
18 - 09.11.17 - 17:16
(16) показывай что у тебя между:

ОбъектВорд = Новый COMОбъект("Word.Application");

ДокументВорд = ОбъектВорд.Documents.Add(ИмяФайлаПаспортаЗаявки);

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует