0
Мурочка
04.08.11
✎
18:06
|
Добрый день!
Проблема при печати шаблона OpenOffice Writer из 1С 7.7.
ServiceManager = СоздатьОбъект("com.sun.star.ServiceManager");
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
Scr = СоздатьОбъект("MSScriptControl.ScriptControl");
Scr.Language="javascript";
Проблема с Scr.Language="javascript"; Пишет, что не может найти движок или сценарий для обработки javascript (A script engine for the specified language can not be created)
Установлен Windows 2003, IE тоже.
MSScriptControl.ScriptControl в regedit прописан.
Что нужно сделать, чтоб заработало?
|
|
6
smaharbA
04.08.11
✎
18:34
|
//*******************************************
Функция ПолучитьОбертку()
ХТМЛ = СоздатьОбъект("htmlfile");
ХТМЛ.Open("text/html");
//<-- Подготовим нужные методы
ХТМЛ.Write("<script>
|var ХТМЛ;
|ПолучитьЗначение=function(x,y){return x.constructor == Array ? x[y] : x};
|УстановитьЗначение=function(x,y,z){x[y]=z};
|РазмерМассива=function(x){return x.length};
|УстановитьБулево=function(x){x.Value=Boolean(x.Value)};
|Массив=function(x){return new Array(x)};
|</script>");
Док=ХТМЛ.documentElement.document;
// Внедрение объекта Скрипта в самого себя, для сохранности контекста
Док.script.ХТМЛ=ХТМЛ;
// Все подготовке -->
Возврат Док.script;
КонецФункции // ПолучитьОбертку(Это)
Функция ОпенОфис(Файл="")
Это=ПолучитьОбертку();
//УРЛ="file:///"+Это.encodeURI(СтрЗаменить(Файл,"\","/"));
СервисМанагер=СоздатьОбъект("com.sun.star.ServiceManager");
Обновлялка=СервисМанагер.createInstance("com.sun.star.reflection.CoreReflection");
Проводник=СервисМанагер.createInstance("com.sun.star.ucb.FileContentProvider");
УРЛ=Проводник.getFileURLFromSystemPath("",Файл);
Сообщить(УРЛ);
Массив=Это.Массив(0);
Параметр=Это.Массив(0);
Для Сч=0 По 1 Цикл
Обновлялка.forName("com.sun.star.beans.PropertyValue").createObject(Параметр);
Это.УстановитьЗначение(Массив,Сч,Это.ПолучитьЗначение(Параметр,0));
КонецЦикла;
Параметр=Это.ПолучитьЗначение(Массив,0);
Параметр.Name="Hidden";
Параметр.Value=0;//Если 0 или любое пустое значение то Ложь, иначе Истина
Это.УстановитьБулево(Параметр);
Параметр=Это.ПолучитьЗначение(Массив,1);
Параметр.Name="Password";
Параметр.Value="123";
Для Сч=0 По Это.РазмерМассива(Массив)-1 Цикл
Сообщить(Это.ПолучитьЗначение(Массив,Сч).Name);
Сообщить(Это.ПолучитьЗначение(Массив,Сч).Value);
КонецЦикла;
Десктоп = СервисМанагер.createInstance("com.sun.star.frame.Desktop");
//Док = Десктоп.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Массив );
Док = Десктоп.LoadComponentFromURL(УРЛ, "_blank", 0, Массив );
Листы=Док.getSheets();
Лист=Листы.getByIndex(0);
Курсор=Лист.createCursor();
Курсор.gotoStartOfUsedArea(0);
Курсор.gotoEndOfUsedArea(-1);
Адреса=Курсор.getRangeAddress();
Диапазон=Лист.getCellRangeByPosition(Адреса.StartColumn,Адреса.StartRow,Адреса.EndColumn,Адреса.EndRow);
Поиск=Диапазон.createSearchDescriptor();
Поиск.SearchRegularExpression = -1;
Поиск.SearchString = ".+";
Рез=Диапазон.findAll(Поиск);
Всего=Рез.getCount();
Начало=Рез.getByIndex(0).getRangeAddress();
Конец=Рез.getByIndex(Всего-1).getRangeAddress();
ДиапазонДанных=Диапазон.getSpreadsheet().getCellRangeByPosition(Начало.StartColumn, Начало.StartRow,Конец.EndColumn,Конец.EndRow);
Для С=1 По ДиапазонДанных.getRows().getCount() Цикл
Стр="";
Для К=1 По ДиапазонДанных.getColumns().getCount() Цикл
Стр=Стр+"; "+ДиапазонДанных.getCellByPosition(К-1,С-1).getText().String();
КонецЦикла;
Сообщить(Стр);
КонецЦикла;
Массив=Это.Массив(0);
Обновлялка.forName("com.sun.star.beans.PropertyValue").createObject(Параметр);
Это.УстановитьЗначение(Массив,0,Это.ПолучитьЗначение(Параметр,0));
Параметр.Name="Wait";
Параметр.Value=-1;//Если 0 или любое пустое значение то Ложь, иначе Истина
Это.УстановитьБулево(Параметр);
Для Сч=0 По Это.РазмерМассива(Массив)-1 Цикл
Сообщить(Это.ПолучитьЗначение(Массив,Сч).Name);
Сообщить(Это.ПолучитьЗначение(Массив,Сч).Value);
КонецЦикла;
Док.Print(Массив);
//Предупреждение("Печать ?");
Док.Close(-1);
//Десктоп.Terminate();
КонецФункции
//*******************************************
Процедура Сформировать()
Перем Имя,Путь;
Если ФС.ВыбратьФайл(0,Имя,Путь,"","Файлы офиса|*.ods;*.xls;*.odt;*.doc","*")=0 Тогда
Возврат;
КонецЕсли;
ОпенОфис(Путь+Имя);
КонецПроцедуры
|
|