Имя: Пароль:
1C
1С v8
Странно закрывается word на сервере
0 Gossar1C
 
21.05.13
10:44
Здравствуйте. Заполняю вордовский шаблон в 1С-ке сохраняю в формате PDF и передаю его на клиента, суть проблемы заключается в закрытии ворда, если допустим подключиться удаленно к рабочему столу сервера и в 1С ке распечатать word то он его нормально закрывает и убивает процесс, а если не подключаться а просто взять и из 1Ски распечатать договор то на сервере остается висеть процесс вордовский, не могу понять с чем это связано... прошу помощи. Заранее спасибо. Вот кусок кода закрытия:

Попытка
           
           MsWord.Application.Visible = 0;
           Word = MsWord.Application;
           Док = Word.Documents(1);
           Док.Activate();
           
           
           Замена = Док.Content.Find;
           Замена.Execute("[НомерДоговора]", Ложь, Истина, Ложь, , , Истина, , Ложь," " + Выборка.Код);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ОбщаяСтрокаДатой]", Ложь, Истина, Ложь, , , Истина, , Ложь, ОбщаяСтрокаСДатой);
           
           Замена = Док.Content.Find;
           Замена.Execute("[Партнер]", Ложь, Истина, Ложь, , , Истина, , Ложь, Выборка.Партнер.Наименование);
           
           Замена = Док.Content.Find;
           Замена.Execute("[КонтактноеЛицоПартнера]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.КонтактноеЛицоПартнера),Выборка.КонтактноеЛицоПартнера,"<не указан>"));
                       
           Замена = Док.Content.Find;
           Замена.Execute("[НазваниеФирмыПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ПолноеНаименование"]);
       
           Замена = Док.Content.Find;
           Замена.Execute("[ЮридическийАдресПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ЮридическийАдрес"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ФактическийАдресПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ФактическийАдрес"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ТелефонПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(НЕ ЗначениеЗаполнено(ТелефонПокупателя),ТелефонПартнера,ТелефонПокупателя));
           
           Замена = Док.Content.Find;
           Замена.Execute("[ПочтовыйАдресПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(НЕ ЗначениеЗаполнено(АдресПочтыПокупателя),АдресПочтыПартнера,АдресПочтыПокупателя));
                       
           Замена = Док.Content.Find;
           Замена.Execute("[ИННПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ИНН"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ОКПОПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["КодПоОКПО"]);
                       
           Замена = Док.Content.Find;
           Замена.Execute("[Р/СПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.РСПокупателя),Выборка.РСПокупателя,"<не указан>"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[ВПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.ВПокупателя),Выборка.ВПокупателя,"<не указан>"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[БИКПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.БИКПокупателя),Выборка.БИКПокупателя,"<не указан>"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[К/СПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.КСПокупателя),Выборка.КСПокупателя,"<не указан>"));
           
           Файл = "C:\VremHran" + "\" + "ДоговорПоставки " + СтрЗаменить(Выборка.Код,"/","_");
           
           //Сохраняем в формате pdf
           Док.SaveAs(Файл,17);
           Док.Close(0);
           
           //Запускаем приложение pdf
           ЗапуститьПриложение(Файл + ".pdf");
       Исключение
           Сообщить(ОписаниеОшибки());
           Word.Quit();
       КонецПопытки;
       
       Word.Quit();
КОнецЕсли;


Да кстати клиент-сервер
1 Gossar1C
 
21.05.13
10:45
Сорри код не тот, вот действующий:


Попытка
           
           MsWord.Application.Visible = 0;
           Word = MsWord.Application;
           Док = Word.Documents(1);
           Док.Activate();
           
           
           Замена = Док.Content.Find;
           Замена.Execute("[НомерДоговора]", Ложь, Истина, Ложь, , , Истина, , Ложь," " + Выборка.Код);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ОбщаяСтрокаДатой]", Ложь, Истина, Ложь, , , Истина, , Ложь, ОбщаяСтрокаСДатой);
           
           Замена = Док.Content.Find;
           Замена.Execute("[Партнер]", Ложь, Истина, Ложь, , , Истина, , Ложь, Выборка.Партнер.Наименование);
           
           Замена = Док.Content.Find;
           Замена.Execute("[КонтактноеЛицоПартнера]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.КонтактноеЛицоПартнера),Выборка.КонтактноеЛицоПартнера,"<не указан>"));
                       
           Замена = Док.Content.Find;
           Замена.Execute("[НазваниеФирмыПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ПолноеНаименование"]);
       
           Замена = Док.Content.Find;
           Замена.Execute("[ЮридическийАдресПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ЮридическийАдрес"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ФактическийАдресПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ФактическийАдрес"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ТелефонПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(НЕ ЗначениеЗаполнено(ТелефонПокупателя),ТелефонПартнера,ТелефонПокупателя));
           
           Замена = Док.Content.Find;
           Замена.Execute("[ПочтовыйАдресПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(НЕ ЗначениеЗаполнено(АдресПочтыПокупателя),АдресПочтыПартнера,АдресПочтыПокупателя));
           
           Замена = Док.Content.Find;
           Замена.Execute("[ОГРНПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.ОГРНКонтрагента),Выборка.ОГРНКонтрагента,"________________"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[ИННПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["ИНН"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ОКПОПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, Сведения["КодПоОКПО"]);
           
           Замена = Док.Content.Find;
           Замена.Execute("[ОКВЭДПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.ОКВЭДКонтрагента),Выборка.ОКВЭДКонтрагента,"________________"));
                       
           Замена = Док.Content.Find;
           Замена.Execute("[Р/СПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.РСПокупателя),Выборка.РСПокупателя,"<не указан>"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[ВПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.ВПокупателя),Выборка.ВПокупателя,"<не указан>"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[БИКПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.БИКПокупателя),Выборка.БИКПокупателя,"<не указан>"));
           
           Замена = Док.Content.Find;
           Замена.Execute("[КСПокупателя]", Ложь, Истина, Ложь, , , Истина, , Ложь, ?(ЗначениеЗаполнено(Выборка.КСПокупателя),Выборка.КСПокупателя,"<не указан>"));
           
           Файл = "C:\VremHran" + "\" + "ДоговорПоставки";
           //Сохраняем в формате pdf
           Док.SaveAs(Файл,17);
           
           //Док.Close(0);
           
           ДокументPDF = Новый ДвоичныеДанные(Файл + ".pdf");
           Адрес = ПоместитьВоВременноеХранилище(ДокументPDF);

       Исключение
           Сообщить(ОписаниеОшибки());
           Word.Quit();
       КонецПопытки;
       
       Word.Quit();
   КОнецЕсли;
   
   Возврат Адрес;
2 Ковычки
 
21.05.13
10:48
Для Каждого Окно Из Word.Windows Цикл
   Окно.Close(0);
КонецЦикла;
3 Gossar1C
 
21.05.13
10:53
(2) ?
4 Gossar1C
 
21.05.13
11:19
Народ подскажите пожалуйста
5 dk
 
21.05.13
11:38
MsWord.Application.Visible = -1;
---
погляди на что там при закрытии у тебя ворд матюкается
---
ну или
DisplayAlerts = 0;
6 Gossar1C
 
21.05.13
11:40
(5) есть предположение что служба агент сервера работает под Администратором, поэтому если подключить удаленный рабочий стол через админа процессы убиваются, с админом пробуем переключить на системную аутефикацию, потом перезапустим посмотрим
7 Gossar1C
 
21.05.13
18:36
не получилось =\  теперь процесс не убивается не так не сяк...
8 shurikvz
 
22.05.13
00:16
Перед выходом:

Замена = Неопределено;
Док = Неопределено;
Word = Неопределено;

?
Основная теорема систематики: Новые системы плодят новые проблемы.