0
sprinter83
14.04.20
✎
10:51
|
Добрый день.
Из 1С вывожу договор через openoffice,
В договор нужно добавить 2 картинки (1 - печать, 2 - подпись)
в шаблоне договора есть текст "%Подпись%", "%Печать%", ищу эти надписи и заменяю их картинками
Ниже привёл код вывода. Получается так что первая картинка "Подпись" выводится, а вторая нет
Причём второй параметр %Печать%", по которому должна искаться и выводится следующая картинка также затирается, но картинки нет
Может быть кто-то сталкивался с подобным поведением, не могу найти причину. Заранее благодарен
Процедура ОткрытьOpenOffice(OpenOffice, имяВременногоФайла, ДанныеДляПечати)
Параметры = ДанныеДляПечати.Параметры;
КартинкаПечать = ДанныеДляПечати.КартинкаПечать;
КартинкаПодпись = ДанныеДляПечати.КартинкаПодпись;
Args = Новый COMSafeArray("VT_DISPATCH", 1);
Param=OpenOffice.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
Param.Name = "AsTemplate";
Param.Value = True;
Args.SetValue(0,Param);
Desktop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop");
ПутьКФайлуURL = convertToURL(имяВременногоФайла);
Document = Desktop.LoadComponentFromURL(ПутьКФайлуURL, "_blank", 0, Args);
Если КартинкаПодпись <> Неопределено Тогда
ДобавитьКартинкуОпенОфис(Document, КартинкаПодпись, "%Подпись%");
КонецЕсли;
Если КартинкаПечать <> Неопределено Тогда
ДобавитьКартинкуОпенОфис(Document, КартинкаПечать, "%Печать%");
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьКартинкуОпенОфис(Document, РисунокПечати, ИмяЗакладки)
#Если ВебКлиент Тогда
ИмяВременногоФайла = КаталогВременныхФайлов() + Строка(Новый УникальныйИдентификатор) + ".tmp";
#Иначе
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("tmp");
#КонецЕсли
ДвоичныеДанные = ПолучитьИзВременногоХранилища(РисунокПечати);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
TextGraphicObject = Document.createInstance("com.sun.star.text.TextGraphicObject");
FileURL = ИмяФайлаВURL(ИмяВременногоФайла);
TextGraphicObject.GraphicURL = FileURL;
TextGraphicObject.SurroundContour = True;
SearchDescriptor = Document.CreateSearchDescriptor();
SearchDescriptor.SearchString = ИмяЗакладки;
SearchDescriptor.SearchCaseSensitive = False;
SearchDescriptor.SearchWords = False;
Found = Document.FindFirst(SearchDescriptor);
While Found <> Undefined Do
Found.GetText().InsertTextContent(Found.getText(), TextGraphicObject, True);
Found = Document.FindNext(Found.End, SearchDescriptor);
EndDo;
КонецПроцедуры
|
|