Имя: Пароль:
1C
 
Печатная форма WORD
0 LeoKeyn
 
24.01.18
15:29
Люди добрые, помогите, пожалуйста решить проблему. Клиент-серверный вариант базы:

&НаКлиенте
Процедура ок(Команда)
    //Попытка создать COM объект
    Попытка
        ОбъектВорд = Новый COMОбъект("Word.Application");
    Исключение
        Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    // Получим шаблон документа из макета объекта на сервере и активируем его
    ИмяФайлаШаблона = ПолучитьИмяВременногоФайла(".dot");
    ПолучитьМакетСервер().Записать(ИмяФайлаШаблона);
    ОбъектВорд.Documents.Add(ИмяФайлаШаблона);
    ШаблонВорд = ОбъектВорд.ActiveDocument;
    
    
            Замена = ШаблонВорд.Content.Find;
            Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2);
    

    
    //После заполнения шаблона сделаем его видимым и активным для пользователя
    ОбъектВорд.Application.Visible = Истина;
    ОбъектВорд.Activate();

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

&НаСервере
Функция ПолучитьМакетСервер()
    ЭтотОбъектФ = РеквизитФормыВЗначение("Объект");
    Макет = ЭтотОбъектФ.ПолучитьМакет("Макет");
    Возврат Макет;
КонецФункции


Ошибка:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (ПолучитьМакетСервер)
    ПолучитьМакетСервер().Записать(ИмяФайлаШаблона);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОболочкаActiveDocument'


Обчитался форумов, говорят так сделать можно, а нельзя почему-то (((
1 LeoKeyn
 
24.01.18
15:31
(0) Не бросайте в беде :-)
2 MrCoffin
 
24.01.18
15:35
(1) Вы держитесь! Счастья, здоровья...
Попробуй через хранилище.
3 Вафель
 
24.01.18
15:35
записывай на сервере - на клиенте получай готовый файл
4 LeoKeyn
 
24.01.18
15:36
(2) Пробовал

&НаКлиенте
Процедура ок(Команда)
    //Попытка создать COM объект
    Попытка
        ОбъектВорд = Новый COMОбъект("Word.Application");
    Исключение
        Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    // Получим шаблон документа из макета объекта на сервере и активируем его
    Файл = ПолучитьИзВременногоХранилища(ПолучитьМакетСервер());

    Файл.Documents.Add();
    ШаблонВорд = Файл.ActiveDocument;
    
    
            Замена = ШаблонВорд.Content.Find;
            Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2);
    

    
    //После заполнения шаблона сделаем его видимым и активным для пользователя
    ОбъектВорд.Application.Visible = Истина;
    ОбъектВорд.Activate();

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

&НаСервере
Функция ПолучитьМакетСервер()
    Файл = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");  //двоичный макет
    АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(Файл);
    Возврат АдресФайлаВХранилище;
КонецФункции
5 LeoKeyn
 
24.01.18
15:36
(3) И при этом он будет сохраняться на машине сервера?
6 Вафель
 
24.01.18
15:36
в хранилище не влезет макет ворд
7 Вафель
 
24.01.18
15:37
8 LeoKeyn
 
24.01.18
15:39
(7) Я очень извиняюсь за свою тугодумость, но нльзя ли показать на моем примере, а то что то додумкать не выходит :-)
9 cw014
 
24.01.18
15:40
(8) В твоем случае либо все на сервере делать, либо избавиться от макета
10 LeoKeyn
 
24.01.18
15:41
(9) На сервере не вариант (клиент-серверная база, не файловая) открыть то нужно на клиенте. Да и от макета избавлять, в чем смысл всего этого тогда будет :-)
11 cw014
 
24.01.18
15:42
(10) Заполнять ручками, не из макета "ОболочкаActiveDocument"
12 Вафель
 
24.01.18
15:42
(10) после ПолучитьФайлы() пишешь весь свой код из процедуры
13 MrCoffin
 
24.01.18
15:54
(7) Скажи, пожалуйста, что там по ссылке, у меня всё закрыто.
(4) Тогда как костыльный костыль: Сделай бинарные данные, засунь их в хранилище значения, хранилище значения сериализуй в строку ХМЛ, строку передай на клиента и на клиенте всё в обратно порядке.
14 LeoKeyn
 
24.01.18
16:03
&НаКлиенте
Процедура ок(Команда)
    Адрес = ФормированиеДоговораПоШаблону();  
    ВремФайл = КаталогВременныхФайлов() + "Договор.doc";

      
        ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc");
              
    

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

&НаСервере
Функция ПолучитьМакетСервер(ИмяМакета)
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);  //двоичный макет
    Возврат Макет;
КонецФункции

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

            Замена = Документ.Content.Find;
            Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2);

      
        Документ.SaveAs(ВремФайл);
        Документ.SaveAs(ИмяВременногоФайла);
        КомОбъект.Application.Quit();
        КомОбъект = Неопределено;
  
        Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл));
        УдалитьФайлы(ВремФайл);
  
        Возврат Адрес;

КонецФункции


Это вроде то что вы говорите, но выходит

[Window Title]
C:\Users\ITMAN3\AppData\Local\Temp\Договор.doc

[Content]
Не удается найти "C:\Users\ITMAN3\AppData\Local\Temp\Договор.doc". Проверьте, правильно ли указано имя и повторите попытку.

[ОК]

Я так понимаю на сервере нужно поставить какуюто библиотеку(офиса там нет и нельзя). Помогите! :-)
15 LeoKeyn
 
24.01.18
16:04
(14) или я в принципе не туда помещаю?
16 LeoKeyn
 
24.01.18
16:06
(15) Я так понимаю, что помещаю во ременной хранилище на сервере, а нужно поместить на машине клиента?
17 Вафель
 
24.01.18
16:07
(13) код как передать файл с сервера на клиент
18 LeoKeyn
 
24.01.18
16:13
(16) Скоро голова поедет)
19 Вафель
 
24.01.18
16:14
(14) где у тебя на клиенте получение фала?
20 LeoKeyn
 
24.01.18
16:15
(19) &НаКлиенте
Процедура ок(Команда)
    Адрес = ФормированиеДоговораПоШаблону();  
    ВремФайл = КаталогВременныхФайлов() + "Договор.doc";

      
        ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc");
         ПолучитьФайл(Адрес, ВремФайл);      
    

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

&НаСервере
Функция ПолучитьМакетСервер(ИмяМакета)
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);  //двоичный макет
    Возврат Макет;
КонецФункции

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

            Замена = Документ.Content.Find;
            Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2);

      
        Документ.SaveAs(ВремФайл);
        Документ.SaveAs(ИмяВременногоФайла);
        КомОбъект.Application.Quit();
        КомОбъект = Неопределено;
  
        Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл));
        УдалитьФайлы(ВремФайл);
  
        Возврат Адрес;

КонецФункции
21 LeoKeyn
 
24.01.18
16:16
(19) То же самое
22 LeoKeyn
 
24.01.18
16:16
(19) Ошибка та же имею ввиду
23 LeoKeyn
 
24.01.18
16:17
(19) Извиняюсь не та же :-)


{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(9)}: Ошибка при вызове метода контекста (ПолучитьФайл)
         ПолучитьФайл(Адрес, ВремФайл);      
по причине:
Недопустимое значение параметра (параметр номер '1')
24 Вафель
 
24.01.18
16:18
(23) попробуй код из (7)
25 LeoKeyn
 
24.01.18
16:19
(24) Хорошо, сейчас
26 LeoKeyn
 
24.01.18
16:22
(24) Я видимо уже неимоверно туплю, но не могу понять как это написать под себя. Если сможете помочь буду крайне благодарен
27 LeoKeyn
 
24.01.18
16:26
(24) Вчитываюсь, но думалка не помогает :-(
28 MrCoffin
 
24.01.18
16:29
ХЗ=Новый ХранилищеЗначения(ТвоеДобро, Новый СжатиеДанных(9));
СтрХМЛ=XMLСтрока(ХЗ);
СтрХМЛ передаешь на клиента и читаешь чтением хмл, пишешь во временный файл и т.д. и т.п.
Скопируй мне сюда код из (7).
29 LeoKeyn
 
24.01.18
16:30
(28) &НаКлиенте
Процедура Сохранить(Команда)
    
    Адрес = СохранитьНаСервере();
    Описание = Новый ОписаниеПередаваемогоФайла(Объект.ИмяФайла, Адрес);
    МассивОписаний = Новый Массив;
    МассивОписаний.Добавить(Описание);
    ПолучитьФайлы(МассивОписаний,,,Ложь);
    
    Состояние("Файл сохранен");

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

&НаСервере
Функция СохранитьНаСервере()
    
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
    
        //Заполнение файла;
    
    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
    Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
    
    Возврат Адрес;
    
КонецФункции
30 LeoKeyn
 
24.01.18
16:37
Странно, почему мой код не работает, здесь утверждают, что все рабочее :-)
http://1c-pro.ru/threads/vneshnjaja-pechatnaja-forma-tonkij-klient-pechat-v-word.53865/
31 LeoKeyn
 
24.01.18
17:09
Видать никак мне не решить.
(28) не получается реализовать
32 LeoKeyn
 
24.01.18
17:23
&НаКлиенте
Процедура ок(Команда)
    Адрес = ФормированиеДоговораПоШаблону();
    Если Адрес = Неопределено Тогда
        Возврат;
    КонецЕсли;
  
    ВремФайл = КаталогВременныхФайлов() + "Договор.doc";

    
        ПолучитьФайл(Адрес, ВремФайл);
        ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc");
    
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетСервер(ИмяМакета)

    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);
    Возврат Макет;

КонецФункции // ПолучитьМакетСервер(ИмяМакета)()


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

            Замена = Документ.Content.Find;
            Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2);
        

      
        Документ.SaveAs(ВремФайл);
        Документ.SaveAs(ИмяВременногоФайла);
        КомОбъект.Application.Quit();
        КомОбъект = Неопределено;
  
        Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл));
        УдалитьФайлы(ВремФайл);
  
        Возврат Адрес;

КонецФункции


Сделал вот такое, и казалось бы должно работать, но не тут то было:-)




{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221164(0x80040154): Класс не зарегистрирован
33 Вафель
 
24.01.18
17:23
на сервере не стоит ворд
34 LeoKeyn
 
24.01.18
17:24
(32) Проделал вот это

1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя «V82.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)
2. В появившейся ветке V82COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll
3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» - Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»

Ничему не помогло.
Помогите, пожалуйста, разобраться.
35 LeoKeyn
 
24.01.18
17:24
(33) А без установки ворда этого не проделать?
Лицензии лишней не дают :-)
Под оправданием "Он там ненужен"
36 LeoKeyn
 
24.01.18
17:26
(33) Если поставить ворд этот код будет рабочим? :-)
37 LeoKeyn
 
24.01.18
17:26
(36) Офис*
38 Вафель
 
24.01.18
17:26
ты так и не отправил файл на клиент )))
39 LeoKeyn
 
24.01.18
17:29
(38) Да как? А как же?


ПолучитьФайл(Адрес, ВремФайл);
        ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc");
40 LeoKeyn
 
24.01.18
17:29
(38) Блин, подскажите, пожалуйста )
41 LeoKeyn
 
24.01.18
17:32
(38) Передаю во временное хранилище на сервере, потом достаю из него, что не так то?
42 rozer76
 
24.01.18
18:07
(0) Конфа на БСП? В БСП все относительно просто и универсально  с этим. Если что пиши почту - кину ВПФ договора WORD c контрагентом для УТ 11.4.
43 kai17
 
24.01.18
19:03
Используйте макет с типом двоичные данные , не Active document.
44 LeoKeyn
 
25.01.18
09:24
А что это значит?:-)

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221164(0x80040154): Класс не зарегистрирован

Пробовал создавать не .doc а .xml проблем с неустановленным вордом не должно быть
45 LeoKeyn
 
25.01.18
09:25
(44) проделывал это: (34)
46 Segate
 
25.01.18
09:36
(45) Зачем тебе на сервере работать с макетом? Делай все на клиенте, если тебе надо показывать:
Все же элементарно:
1) формируешь структуру параметров для печати на сервере
2) получаешь из двоичных данных макет на клиенте, заполняешь параметры из структуры полученной в п1
3)...
4) PROFIIT!!!!111
47 Segate
 
25.01.18
09:39
(41) Судя по ошибке в (14) у вас либо служба сервера запускается от пользователя ITMAN3 либо вы делаете что-то не так, адрес временного файла у вас на сервере будет другой. Думайте, проверяйте
48 LeoKeyn
 
25.01.18
09:45
(46) только вот додумкал до этого, попробую реализовать)
49 Segate
 
25.01.18
09:48
Там реализация простейшая ) но в любом случае на клиенте ворд нужен будет, чтоб с ним взаимодействовать... но он наверняка на клиенте будет
50 LeoKeyn
 
25.01.18
10:01
(49) На клиенте да

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
        Word.Открыть(ПолучитьИзВременногоХранилища(Адрес));
по причине:
Ошибка получения значения из временного хранилища
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'response':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/mngsrv/ws}response
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОболочкаActiveDocument'


Подскажите что делаю не так?
51 LeoKeyn
 
25.01.18
10:01
+ (50)
&НаКлиенте
Процедура ок(Команда)
    Адрес = ФормированиеДоговораПоШаблону();
    Если Адрес = Неопределено Тогда
        Возврат;
    КонецЕсли;
  
    Word = Новый COMОбъект("Word.Application");
        Word.Открыть(ПолучитьИзВременногоХранилища(Адрес));
        
        тр = 1;
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетСервер(ИмяМакета)

    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);
    Возврат Макет;

КонецФункции // ПолучитьМакетСервер(ИмяМакета)()


&НаСервере
Функция ФормированиеДоговораПоШаблону()
    
         ИмяМакета = "Макет";
       АктивныйДокумент = ПолучитьМакетСервер(ИмяМакета);
      
      
        Адрес = ПоместитьВоВременноеХранилище(АктивныйДокумент);
        
        Возврат Адрес;
    
    
КонецФункции
52 LeoKeyn
 
25.01.18
10:02
(49) Я чувствую, что идея сработает и очень хочется довести ее до конца) и понять все это наконецто)
53 VladZ
 
25.01.18
10:05
Читать мантру...  Вдумчиво и нараспев: получаешь из двоичных данных макет.  

До полного просветления.
54 LeoKeyn
 
25.01.18
10:10
(53) не могу понять как с этими двоичными данными быть, можете ссылку скинуть?
55 LeoKeyn
 
25.01.18
10:25
Покажите хоть какой нибудь пример по этому поводу, пожалуйста (53)
56 Segate
 
25.01.18
10:33
(51) А зачем ты получаешь макет на сервере?
57 Segate
 
25.01.18
10:38
Word = Новый COMОбъект("Word.Application");
   Макет = ПолучитьМакетСервер();
   временныйПуть = КаталогВременныхФайлов();
   имяВременногоФайла = временныйПуть +строка(хэш)+ ".docx";
   Макет.Записать(имяВременногоФайла);
   ТекДок = Word.Documents.ADD(имяВременногоФайла);    
   СтруктураПараметров = СформироватьСтруктуруПараметров();
ТекДок.Fields.Update();
   Word.ActiveWindow.View.ShowFieldCodes = False;
   //Word.Visible=Истина;  
   ActDoc=Word.ActiveDocument;
    ActDoc.ExportAsFixedFormat(КаталогВременныхФайлов()+строка(хэш)+".pdf",17,true,0);
58 VladZ
 
25.01.18
10:38
(54) В яндексе забанили?
http://catalog.mista.ru/public/407448/
59 Segate
 
25.01.18
10:38
Заполнение параметров вырезал.

Получение макета ворд, сохранение его в пдф.
60 LeoKeyn
 
25.01.18
10:56
(57) Это на клиенте выполнить можно?
61 LeoKeyn
 
25.01.18
11:11
(57) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(18)}: Ошибка при вызове метода контекста (ПолучитьМакетСервер)
   Макет = ПолучитьМакетСервер(Макет);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОболочкаActiveDocument'
62 Вафель
 
25.01.18
11:44
(61) нужно двоичные данные передвать
63 LeoKeyn
 
25.01.18
11:48
(62) Да как это сделать то, покажите пример, пожалуйста :-)
64 LeoKeyn
 
25.01.18
11:49
(62) Я понял, что это нужно передать через двоичные данные, но как и как потом их пихнуть в ворд то?
65 Вафель
 
25.01.18
12:05
ты же все равно записываешь в файл
66 VladZ
 
25.01.18
12:08
(64) Получаешь из макета, записываешь как временный файл с расширением doc.
67 LeoKeyn
 
25.01.18
13:00
(66) офиса нет на сервере и нет возможности поставить
68 Вафель
 
25.01.18
13:03
(67) откажись от activedocument
69 LeoKeyn
 
25.01.18
13:15
(68) так как сделать по другому? пока единственная идея это на сетевом ресурсе разместить шаблоны и обращаться к ним из кода по пути. Но решение шадкое очень
70 LeoKeyn
 
25.01.18
15:33
Единственное решение к которому пришел, к сожалению не вышло сделать по человечески :-(

&НаКлиенте
Процедура ок(Команда)
    Адрес = ФормированиеДоговораПоШаблону();
    Если Адрес = Неопределено Тогда
        Возврат;
    КонецЕсли;
      Макет = ПолучитьИзВременногоХранилища(Адрес);
      //Макет2 =
    Word = Новый COMОбъект("Word.Application");
        //Word.Documents.Open("D:\_DISTRIB\External processing\ZFL-ID31.dot");
        Документ = Word.Documents.Add("D:\_DISTRIB\External processing\ZFL-ID31.dot");
        Word.Application.Visible = Истина;
        Word.Activate();
    //Документ.Visible = True;
        тр = 1;
КонецПроцедуры
71 LeoKeyn
 
25.01.18
15:34
+(70) Начало кода не нужно, просто не убрал
72 Вафель
 
25.01.18
16:06
(69) Не знаешь как добавить макет с двоичными данными?
73 LeoKeyn
 
25.01.18
16:42
(72) Макет добавить как знаю, а вот как его передать на
клиент и преобразовать в word понять никак не могу, а
примерами никто делиться не хочет :-)
74 LeoKeyn
 
25.01.18
17:24
Божечки, я наконец то понял! Если найдется такой же
искатель истины как и я вот ему пример, чтобы не мучался


Процедура ок(Команда)
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
    Адрес = ФормированиеДоговораПоШаблону();
    Если Адрес = Неопределено Тогда
        Возврат;
    КонецЕсли;
      Макет = ПолучитьИзВременногоХранилища(Адрес);
      Макет.Записать(ИмяВременногоФайла);
      //Макет2 =
    Word = Новый COMОбъект("Word.Application");
        //Word.Documents.Open("D:\_DISTRIB\External processing\ZFL-ID31.dot");
        Документ = Word.Documents.Add(ИмяВременногоФайла);
        Word.Application.Visible = Истина;
        Word.Activate();
    //Документ.Visible = True;
        тр = 1;
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетСервер(ИмяМакета)

    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);
    Возврат Макет;

КонецФункции // ПолучитьМакетСервер(ИмяМакета)()


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

        УИД = Новый УникальныйИдентификатор();
        Адрес = ПоместитьВоВременноеХранилище(АктивныйДокумент, УИД);
        
        Возврат Адрес;
    
    
КонецФункции
75 Вафель
 
25.01.18
17:25
уид нужно от формы брать, а не произвольный
76 Вафель
 
25.01.18
17:25
Я же тебе писал
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);