Имя: Пароль:
1C
1C 7.7
v7: 1С и OpenOffice. Scr.Language = "javascript";
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 прописан.

Что нужно сделать, чтоб заработало?
1 Fragster
 
гуру
04.08.11
18:12
jscript работает? vbscript?
2 Мурочка
 
04.08.11
18:15
неа
3 andrewks
 
04.08.11
18:19
установить JScript не предлагать?
4 Мурочка
 
04.08.11
18:23
:) а без этого не обойтись?
5 trdm
 
04.08.11
18:23
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 Тогда
       Возврат;
   КонецЕсли;
   ОпенОфис(Путь+Имя);
КонецПроцедуры
7 Мурочка
 
04.08.11
18:37
Ого! Спасибо
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший