Имя: Пароль:
1C
1С v8
Не понимаю, как это открывается на клиенте?
0 Сохопап
 
24.02.12
20:15
Объясните пожалуйста, как это может открываться на клиенте?
Ведь OLE-объект создается на сервере да еще и без контекста?

&НаСервереБезКонтекста
Процедура РедактироватьМакетДокумента()
   
   Договор = Документы.РасходнаяНакладная.ПолучитьМакет("Договор");

   // Получить объект из макета.
   MSWord = Договор.Получить();
   
   НаименованиеКонтрагента = "ООО Торгуем всем";
   НомерДоговора = "333";
   ДатаДоговора = Формат(ТекущаяДата(), "ДЛФ=D");
   НаименованиеОрганизации = Константы.Организация.Получить();

   Попытка
       Документ = MSWord.Application.Documents(1);
       Документ.Activate();

       // Получить объект, который будем использовать для поиска и замены.
       Замена = Документ.Content.Find;

       // Заменить заранее определенные ключевые конструкции на требуемый текст.
       
       Замена.Execute("<НазваниеКомпании>", Ложь, Истина, Ложь, , , Истина, , Ложь, """" + НаименованиеКонтрагента + """");

       Замена = Документ.Content.Find;
       Замена.Execute("<НомерДоговора>", Ложь, Истина, Ложь, , , Истина, , Ложь, НомерДоговора);

       Замена = Документ.Content.Find;
       Замена.Execute("<ДатаДоговора>", Ложь, Истина, Ложь, , , Истина, , Ложь, ДатаДоговора);
       
       Замена = Документ.Content.Find;
       Замена.Execute("<Организация>", Ложь, Истина, Ложь, , , Истина, , Ложь, НаименованиеОрганизации);

       // Далее аналогично для остальных ключевых конструкций.
         //...

       // Делаем видимым приложение и активизируем его.
       MSWord.Application.Visible = Истина;
       MSWord.Activate();

   Исключение

       // Если произойдет ошибка, выводятся данные об ошибке, и объект закрывается.
       Сообщение = Новый СообщениеПользователю();
       Сообщение.Текст = ОписаниеОшибки();
       Сообщение.Сообщить();
       
       MSWord.Application.Quit();
   КонецПопытки;
   
КонецПроцедуры
1 H A D G E H O G s
 
24.02.12
20:16
Сервер тоже чиловек (Виндоус, на котором есть Офис)
2 H A D G E H O G s
 
24.02.12
20:16
Кроме того, клиент может быть и сервером одновременно.
3 Сохопап
 
24.02.12
20:19
(2) дык процедура выполняется на сервере, Ком-объект создается на сервере.

По идее надо сохранить вордешник в двоичные данные, затем получить их на клиенте, сохранить, затем запустить файл вордешника.

Почему это открывается с сервера на клиенте?
4 Сохопап
 
24.02.12
20:20
+(3) во всех книгах по 8,2 написано, что нужна интерпретация данных для клиента и для сервера
5 Сохопап
 
24.02.12
20:21
(2) каким образом тонкий клиент может быть сервером?
6 Сохопап
 
24.02.12
20:23
+(5) Сервер в сети, я с тонкого клиента эту процедуру запускаю.

У меня отрывается заполненный вордешник и начинается взрыв мозга.
7 Сохопап
 
24.02.12
20:27
(1) @ H A D G E H O G s, оно понятно, если клиент и сервер на одном компе находятся, но сервак юзается клиентом по СЕТИ. Как это может открываться?
8 acsent
 
24.02.12
20:29
может файловая
9 Сохопап
 
24.02.12
20:31
(8) нэт, клиент-серверный вариант от Гончарова и Хрусталевой
10 Сохопап
 
24.02.12
20:33
(8) пля, во всех книгах пишут "воспринимайте тонкий клиент и сервер как отдельные приложения". Я как последний идиот, создают сом-объект на сервере, потом долбаюсь с передачей двоичных данных на тонкого клиента чтобы открыть файл в вордешнике.

А оказывается, решение то в (0), но я нифига не понимаю как это работает!
11 Сохопап
 
24.02.12
20:35
+(10) я лошара, Гончарова и Хрусталева имеют тайные знания!!!!
12 H A D G E H O G s
 
24.02.12
20:36
Че скажет
СтрокаСоединенияИнформационнойБазы()
13 H A D G E H O G s
 
24.02.12
20:36
?
14 Сохопап
 
24.02.12
20:42
(12) это-то тут при чем?
15 Сохопап
 
24.02.12
20:46
(12) Ты тоже обладаешь тайными знаниями!!!

Что за ерунда, если я добавляю в код

&НаКлиенте
Процедура РедактироватьМакет(Команда)
   РедактироватьМакетДокумента();
   
       Сообщение = Новый СообщениеПользователю();
       Сообщение.Текст = СтрокаСоединенияИнформационнойБазы();
       Сообщение.Сообщить();

КонецПроцедуры

То выскакивает ошибка
{Обработка.РаботаСActiveDocument.Форма.Форма(49,3)}: Неопознанный оператор
       <<?>>MSWord.Application.Visible = Истина;
16 H A D G E H O G s
 
24.02.12
20:48
Скинь в виде обработки первый вариант