Вход | Регистрация



Печатная форма WORD

Печатная форма WORD
Я
   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'


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

&НаКлиенте
Процедура ок(Команда)
    //Попытка создать COM объект

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

    Файл = ПолучитьИзВременногоХранилища(ПолучитьМакетСервер());

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

    
    //После заполнения шаблона сделаем его видимым и активным для пользователя

    ОбъектВорд.Application.Visible = Истина;
    ОбъектВорд.Activate();

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

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

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

[ОК]

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

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

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

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

    Возврат Макет;
КонецФункции

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

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

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

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

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

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

&НаСервере
Функция СохранитьНаСервере()
    
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
    
        //Заполнение файла;

    
    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
    Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
    
    Возврат Адрес;
    
КонецФункции
   LeoKeyn
 
30 - 24.01.18 - 16:37
Странно, почему мой код не работает, здесь утверждают, что все рабочее :-)
http://1c-pro.ru/threads/vneshnjaja-pechatnaja-forma-tonkij-klient-pechat-v-word.53865/
   LeoKeyn
 
31 - 24.01.18 - 17:09
Видать никак мне не решить.
(28) не получается реализовать
   LeoKeyn
 
32 - 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
на сервере не стоит ворд
 
 
   LeoKeyn
 
34 - 24.01.18 - 17:24
(32) Проделал вот это
1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя «V82.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор) 
2. В появившейся ветке V82COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll 
3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» - Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»

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


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

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

Пробовал создавать не .doc а .xml проблем с неустановленным вордом не должно быть
   LeoKeyn
 
45 - 25.01.18 - 09:25
(44) проделывал это: (34)
   Segate
 
46 - 25.01.18 - 09:36
(45) Зачем тебе на сервере работать с макетом? Делай все на клиенте, если тебе надо показывать:
Все же элементарно:
1) формируешь структуру параметров для печати на сервере
2) получаешь из двоичных данных макет на клиенте, заполняешь параметры из структуры полученной в п1
3)...
4) PROFIIT!!!!111
   Segate
 
47 - 25.01.18 - 09:39
(41) Судя по ошибке в (14) у вас либо служба сервера запускается от пользователя ITMAN3 либо вы делаете что-то не так, адрес временного файла у вас на сервере будет другой. Думайте, проверяйте
   LeoKeyn
 
48 - 25.01.18 - 09:45
(46) только вот додумкал до этого, попробую реализовать)
   Segate
 
49 - 25.01.18 - 09:48
Там реализация простейшая ) но в любом случае на клиенте ворд нужен будет, чтоб с ним взаимодействовать... но он наверняка на клиенте будет
 
 Рекламное место пустует
   LeoKeyn
 
50 - 25.01.18 - 10:01
(49) На клиенте да
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
        Word.Открыть(ПолучитьИзВременногоХранилища(Адрес));
по причине:
Ошибка получения значения из временного хранилища
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'response':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/mngsrv/ws}response
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОболочкаActiveDocument'


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

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

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

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



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

До полного просветления.
   LeoKeyn
 
54 - 25.01.18 - 10:10
(53) не могу понять как с этими двоичными данными быть, можете ссылку скинуть?
   LeoKeyn
 
55 - 25.01.18 - 10:25
Покажите хоть какой нибудь пример по этому поводу, пожалуйста (53)
   Segate
 
56 - 25.01.18 - 10:33
(51) А зачем ты получаешь макет на сервере?
   Segate
 
57 - 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);
   VladZ
 
58 - 25.01.18 - 10:38
(54) В яндексе забанили?
http://catalog.mista.ru/public/407448/
   Segate
 
59 - 25.01.18 - 10:38
Заполнение параметров вырезал.

Получение макета ворд, сохранение его в пдф.
   LeoKeyn
 
60 - 25.01.18 - 10:56
(57) Это на клиенте выполнить можно?
   LeoKeyn
 
61 - 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) нужно двоичные данные передвать
   LeoKeyn
 
63 - 25.01.18 - 11:48
(62) Да как это сделать то, покажите пример, пожалуйста :-)
   LeoKeyn
 
64 - 25.01.18 - 11:49
(62) Я понял, что это нужно передать через двоичные данные, но как и как потом их пихнуть в ворд то?
   Вафель
 
65 - 25.01.18 - 12:05
ты же все равно записываешь в файл
   VladZ
 
66 - 25.01.18 - 12:08
(64) Получаешь из макета, записываешь как временный файл с расширением doc.
   LeoKeyn
 
67 - 25.01.18 - 13:00
(66) офиса нет на сервере и нет возможности поставить
   Вафель
 
68 - 25.01.18 - 13:03
(67) откажись от activedocument
   LeoKeyn
 
69 - 25.01.18 - 13:15
(68) так как сделать по другому? пока единственная идея это на сетевом ресурсе разместить шаблоны и обращаться к ним из кода по пути. Но решение шадкое очень
   LeoKeyn
 
70 - 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;
КонецПроцедуры
   LeoKeyn
 
71 - 25.01.18 - 15:34
+(70) Начало кода не нужно, просто не убрал
   Вафель
 
72 - 25.01.18 - 16:06
(69) Не знаешь как добавить макет с двоичными данными?
   LeoKeyn
 
73 - 25.01.18 - 16:42
(72) Макет добавить как знаю, а вот как его передать на
клиент и преобразовать в word понять никак не могу, а
примерами никто делиться не хочет :-)
   LeoKeyn
 
74 - 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
Я же тебе писал
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует