Имя: Пароль:
1C
1С v8
Вопрос по клиент-серверу
0 murzo1
 
18.07.12
17:19
Если в процедуре на сервере добавить такой код:

&НаСервере
Функция ПолучитьШаблон()
ВремФайл = ПолучитьИмяВременногоФайла("doc");


то имя временно файла сформируется на сервере?
1 х86
 
18.07.12
17:22
>>Если в процедуре на сервере

ключевое слово "в процедуре на сервере", тогда а где оно еще может отработать?
2 murzo1
 
18.07.12
17:31
(1) ясно, тогда вопрос есть такой:

{Документ.ЗаказНаАвтомобиль.Форма.ФормаДокументаУправляемая.Форма(1356)}: Ошибка при вызове метода контекста (SaveAs)
   Документ.SaveAs(ВремФайл);
по причине:
Произошла исключительная ситуация (Microsoft Word): Ошибка команды


Почему на сервере не сохраняет?
3 murzo1
 
18.07.12
17:34
если сервер на томже компе что и клиенская часть то сохраняет на ура
4 murzo1
 
18.07.12
17:37
в файловом варианте тоже сохраняет
5 andrewks
 
18.07.12
17:38
скорее всего, нет прав у юзера, под которым запущены процессы сервера 1С
6 х86
 
18.07.12
17:39
(2)не видно всего кода, смотри где что присваевается и каким переменным/реквизитам. Отладчик тебе в помощь  )
7 murzo1
 
18.07.12
17:41
(6) зачем весь код, я же описал что файловый работает, если сервер на томже кампе работает, если сервер на другом компе не работает, ну вот:


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

&НаСервере
Функция ПолучитьШаблон()
   
   АктивныйДокумент = Объект.Ссылка.ПолучитьОбъект().ПолучитьМакет("ПечатьДКПФиз");
   
   Попытка
       КомОбъект = АктивныйДокумент.Получить();
   Исключение
       Сообщить("Ошибка создания шаблона договора");
   КонецПопытки;
   
   ВремФайл = ПолучитьИмяВременногоФайла("doc");
   Документ = КомОбъект.Application.Documents(1);
   Документ.Activate();
   
   Попытка Документ.Content.Find.Execute("1cPFIO",                    Ложь,Истина,Ложь,,,Истина,,Ложь, Объект.Контрагент.Наименование); Исключение КонецПопытки;

   Документ.SaveAs(ВремФайл);
   Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл));
   УдалитьФайлы(ВремФайл);
   
   Возврат Адрес;
КонецФункции
8 murzo1
 
18.07.12
17:43
может есть какой-то секрет к обращению на сервер который на др. компе, которым никто не делится ))
может чето дописать нужно или просто прав нету или я хз... опытные люди, подскажите
9 EvgeniuXP
 
18.07.12
17:44
либо прав, либо ворда нет на сервере.
10 andrewks
 
18.07.12
17:46
(9) ага, ворда нет, а Activate(), Execute() отрабатывает? права, и только права. либо имя файла.   выведи, что возвращает ПолучитьИмяВременногоФайла("doc"), проверь права
11 murzo1
 
18.07.12
17:52
(10) да, отрабатывают.
Права одмин говорит что все админские... у того юзера под которым запущен сервак... А какие правда и под кем там должны быть?
Путь стандартный, диск C:\Users\...
12 hhhh
 
18.07.12
17:59
(11) ну видимо сервак под одним пользователем запущен, а сервер1С под другим.
13 andrewks
 
18.07.12
18:04
(11) ищешь rphost'ы, смотришь юзера (или в службах, под кем стартует агент сервера 1С), смотришь путь, который возвращает ПолучитьИмяВременногоФайла("doc"), проверяешь корректность пути, права, свободное место, квоты и т.п.
14 murzo1
 
18.07.12
18:04
(12) а как определить под каким юзером пытается сохранится этот файл?
15 andrewks
 
18.07.12
18:09
попробуй записать по этому пути обычный текстарь мегабайт на несколько
16 murzo1
 
19.07.12
09:25
Попробовал сохранить на другой компьютер, локальный, но через сетевое имя, ошибка таже самая:


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


&НаСервере
Функция ПолучитьШаблон()
   
   АктивныйДокумент = Объект.Ссылка.ПолучитьОбъект().ПолучитьМакет("ПечатьДКПФиз");
   
   Попытка
       КомОбъект = АктивныйДокумент.Получить();
   Исключение
       Сообщить("Ошибка создания шаблона договора");
   КонецПопытки;
   
   Документ = КомОбъект.Application.Documents(1);
   Документ.Activate();
   
   Попытка Документ.Content.Find.Execute("1cPFIO",Ложь,Истина,Ложь,,,Истина,,Ложь, Объект.Контрагент.Наименование); Исключение КонецПопытки;

   Документ.SaveAs(ВремФайл);
   Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл));
   УдалитьФайлы(ВремФайл);
   
   Возврат Адрес;
КонецФункции



Здесь полюбому есть какой то секрет, по сохранению файлов на сетевой компьютер! Наверно в коде надо добавить какую то строчку и будет счастье...
Неужели никто не делал такого и не знает как сделать?
17 murzo1
 
19.07.12
10:15
АктивныйДокумент.Записать(ВремФайл); - такой командой файл сохраняется на сервере...