Имя: Пароль:
1C
 
Зависает Word на методе open() 1C 8.3
,
0 Zanzarchik
 
19.09.14
14:12
Всем привет! Платформа 8.3.5.1098. Задача: конвертировать doc в pdf на стороне сервера, т.е. функция, которая у меня написана отрабатывает &НаСервере. На серваке пользователь, под которым запущен сервер 1С входит в группу локальных админов, доступ у него есть везде. Word и 1С сервер - 32 разряда. Word естественно, установлен. Если выполняешь этот же код локально на сервер, но у функции ставишь директиву &НаКлиенте, а не &НаСервере, то код благополучно отрабатывает. Если директива &НаСервере, то все, ахтунг, зависает на методе open(). Висит, пока не вырубишь процесс Word через диспетчер. Как это исправить, может кто сталкивался? Помогите, пожалуйста. Вот мой код:

&НаСервере
Процедура КонвертироватьФайл()

Попытка  
        
    Word = Новый COMОбъект("Word.Application");              
        
Исключение
        
    Сообщить("Произошла ошибка открытия файла Microsoft Word по причине: " + ОписаниеОшибки(),СтатусСообщения.Важное);
    Возврат;
        
КонецПопытки;
        
Попытка
        
    Документ = Word.Documents.Open(ПутьКФайлу);
    Документ.Activate();
                
    Файл = Новый Файл(ПутьКФайлу);
    FileName = Файл.Путь + Файл.ИмяБезРасширения + ".pdf";
        
    Документ.SaveAs(FileName, 17);
    Документ.Close();
    Word.Quit();
        
    УдалитьФайлы(ПутьКФайлу);
        
Исключение
        
    Word.Quit();
    УдалитьФайлы(ПутьКФайлу);
        
КонецПопытки;

КонецПроцедуры
1 Балоун
 
19.09.14
14:14
>конвертировать doc в pdf
при чём тут 1С?
2 Zanzarchik
 
19.09.14
14:17
(1) может и не при чём, но код выполнять &НаСервере не хочет, может кто знает, в чем беда. Я думаю, все - таки 1С
3 vicof
 
19.09.14
14:20
Путь к файлу на сервере не существует, не?
4 Zanzarchik
 
19.09.14
14:23
(3) путь есть, изначально я передавал файл на сервер через двоичные данные, сохранял в КаталогВременныхФайлов(), а оттуда читал, потом сделал вообще топорно, поместил файл в папку на сервере и прописал путь к этому файлу.
5 vicof
 
19.09.14
14:28
а зачем ты ему вообще open() делаешь, нельзя просто saveas()?
6 Zanzarchik
 
19.09.14
15:45
(5) а как без open() и без add() загрузить документ, чтобы потом его сохранить в нужный формат?
7 Garykom
 
гуру
19.09.14
15:49
(0) убери попытка / исключение и лови ексепшн

но раз зависает (точнее не зависает как понял а просто ждет тормозит) то скорее всего трабла в версиях ворда к примеру и он там что то пытается у юзверя спросить а ему никто не отвечает ))
8 Garykom
 
гуру
19.09.14
15:52
(7)+ еще попробуй зайди/залогинься на сервере от имени с которым запускается сервер 1С и попробуй открыть в ворде этот файл ручками
9 Zanzarchik
 
19.09.14
15:53
(7) убирал попытка/исключение. Никаких ошибок, просто тормоза. Сейчас попробую погуглить, как все сообщения отменить. Потом отпишусь, но, если будут еще какие предложения, всегда рад услышать!
10 Garykom
 
гуру
19.09.14
15:56
(9) ну сделай процесс/окно ворда то видимым тогда...
11 Zanzarchik
 
19.09.14
16:02
(10) сейчас попробую
12 Zanzarchik
 
19.09.14
16:58
(10) делаю
Word.Visible = 1;
потом захожу на сервер под учеткой UserV81C (под ней сервер 1С запускается) - окно не показывается, а процесс висит. Ладно, будут делать на c#, а потом запускать этот c# через 1С
13 Sei Souma
 
19.09.14
17:17
Таки с сom объектами в основном работаю почему-то на клиенте.
14 Sei Souma
 
19.09.14
17:18
Но если у вас получиться ЭТО сделать на сервере - я вас прошу, напишите как у вас получилось работать с com клиентом на сервере.
15 Garykom
 
гуру
19.09.14
17:46
На всякий случай изучить (хотя там с ошибкой выпадает и excel а word) v8: регламентное задание и Ексель
16 Zanzarchik
 
09.10.14
15:44
(14) - не удалось. Писал программу на C#, запускал ее из 1С - такая же ерунда. Делал как в (15). Не помогло. Причем с Excel проблем не было