Имя: Пароль:
1C
1С v8
Open Office Writer - сформировать и сразу на печать
0 МешочекЗнаний
 
16.11.16
11:00
День добрый.

Создал обработку по заполнению шаблона Writer, он открывается с заменёнными строками в шаблоне. Пользователь нажимает Файл-Печать и всё норм.

Можно как-то отправить заполненный шаблон на печать сразу без открытия?

<code>
ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Параметр");
    ТЗ.Колонки.Добавить("Значение");
    
    Стр = ТЗ.Добавить();
    Стр.Параметр = "<ФИОЗаказчика>";
    Стр.Значение = "ФИО";
    
    ТемпИмя = ПолучитьИмяВременногоФайла("odt");
    
    ОбъектВЗначение = РеквизитФормыВЗначение("Объект");
    Макет = ОбъектВЗначение.ПолучитьМакет("МакетСогласие");
    
    Если Макет=Неопределено тогда    
        Сообщить("Нет шаблона");    
        Возврат (Неопределено);    
    КонецЕсли;    
    
    Макет.Записать(ТемпИмя);
        
    // Открываем OpenOffic    
    ТемпИмяЮрл="file:///" + СтрЗаменить(ТемпИмя, "\", "/");
    
    //Создаем объекты    
    Попытка    
        ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
        Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");     
    Исключение        
        Инф=ИнформацияОбОшибке();        
        Возврат(неопределено)     
    КонецПопытки;
        
    Args = Новый COMSafeArray("VT_DISPATCH", 1);
    
    //Начало. Добавляем эти строки, если хотим открыть как темплейт (каждое открытие, создается    новый файлик с именами     
    //"БезИмени1, БезИмени2...)
    
    Param=ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");    
    Param.Name = "AsTemplate";    
    Param.Value = True;    
    Args.SetValue(0,Param);    
    
    //Все готово, открываем док    
    ООДок = Desktop.LoadComponentFromURL(ТемпИмяЮрл, "_blank", 0, Args);
    
    Replace = ООДок.CreateReplaceDescriptor();
    
    Для Каждого Строка Из ТЗ Цикл             
        Replace.SearchString = Строка.Параметр;
        Replace.ReplaceString = Строка.Значение;
        ООДок.ReplaceAll(Replace);         
    КонецЦикла;

</code>
1 Garykom
 
гуру
16.11.16
11:20
2 МешочекЗнаний
 
17.11.16
08:40
Получилось. Ещё вопрос - как таблицу по нормальному выгрузить во Writer. Гугл и яндекс молчат.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.