|
v7: JavaScript. Попытка обратиться к файлу *.xls. Возвращает ошибку. [решено] | ☑ | ||
---|---|---|---|---|
0
aka AMIGO
09.12.14
✎
12:30
|
Вот такой код:
Попытка scr = СоздатьОбъект("MSScriptControl.ScriptControl"); scr.language = "javascript"; scr.eval("MyArray=new Array()"); ServiceManager=СоздатьОбъект("com.sun.star.ServiceManager"); scr.AddObject("ServiceManager",ServiceManager); scr.eval("MyArray[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("MyArray[0].Name='Hidden'"); scr.eval("MyArray[0].Value=true"); Массив = scr.eval("MyArray"); Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Document = Desktop.LoadComponentFromURL("file://localhost/"+СтрЗаменить(ЕхФайл,"\","/"), "_blank", 0, Массив); Листы = Document.getSheets(); НашЛист = Листы.getByIndex(0); Исключение Сообщить("Ошибка при обращении к OpenOffice."); Возврат; КонецПопытки; На строке Document=... спотыкается и переходит в Исключение. Немного подробностей: "Спотыкается" на ПК с Win-7, установлен ОпенОффис 3.3 У меня, однако, этот кусок кода работает нормально, но Win-XP и установлен LibreOffice В чем-же причина? |
|||
1
aka AMIGO
09.12.14
✎
12:34
|
Или методика обращения не имеет отношения ни к OpenOffice, ни к LibreOffice, поскольку scr.language = "javascript";
Чего нет на компе у юзера с его Win-7 и ОО? |
|||
2
aka AMIGO
09.12.14
✎
12:37
|
Гуру, что открывается первой командой:
СоздатьОбъект("MSScriptControl.ScriptControl"); ? ЗЫ. возможно, надо взять какой-то мучебник и начать изучать язык.. |
|||
3
Йохохо
09.12.14
✎
12:37
|
так вроде работает
Функция ПреобразоватьВURL(ИмяФайла) Возврат "file:///" + СтрЗаменить(ИмяФайла, "", "/"); КонецФункции ДвоичныеДанные = ПолучитьМакет("Макет"); ИмяВремФайла = ПолучитьИмяВременногоФайла(".odt"); ДвоичныеДанные.Записать(ИмяВремФайла); Попытка scr = Новый COMОбъект("MSScriptControl.ScriptControl"); Исключение Сообщить("Ошибка создания объекта MSScriptControl.ScriptControl"); Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; scr.language = "javascript"; scr.eval("Massiv=new Array()"); scr.AddCode("function SetItem(ind,val){Massiv[ind]=val}"); Massiv = scr.eval("Massiv"); Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Исключение Сообщить("Ошибка создания объекта com.sun.star.ServiceManager"); Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; scr.AddObject("ServiceManager", ServiceManager); Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Document = Desktop.loadComponentFromURL(ПреобразоватьВURL(ИмяВремФайла), "_blank", 0, Massiv); |
|||
4
aka AMIGO
09.12.14
✎
12:39
|
(3) Спасибо! сейчас поизучаю твой код
ЗЫ. нашел вот такой сайтик, вроде дело пишут ребята.. http://www.klerk.ru/soft/articles/22124/ |
|||
5
Йохохо
09.12.14
✎
12:45
|
разницца
"file://localhost/"+СтрЗаменить(ЕхФайл,"\","/") "file:///" + СтрЗаменить(ИмяФайла, "", "/") |
|||
6
antoneus
09.12.14
✎
12:46
|
||||
7
exwill
09.12.14
✎
12:48
|
(2) Открывается скрипт на языке javascript. Этот костыль необходим для того чтобы получить значение типа "массив".
В 1С массивов нет. Вот и приходится изгаляться. |
|||
8
aka AMIGO
09.12.14
✎
13:10
|
(5) (6) - Спасибо, ребята.. Пробую.
(7) Ммм.. Понятно.. Но до полного понимания мне ой-ой, как далеко.. |
|||
9
aka AMIGO
09.12.14
✎
13:13
|
(5) Извини, мне непонятно, что заменяется в строке файла:
"file:///" + СтрЗаменить(ИмяФайла, "", "/") ? может быть, так: "file:///" + СтрЗаменить(ИмяФайла, "\", "/") ? |
|||
11
Йохохо
09.12.14
✎
13:30
|
(9) копипаст рабочего кода из толстой восьмерки ОО, где то стырено без особой проверки, мб ошибка) буду иметь в виду
обратная функция на всякий случай Функция ПреобразоватьВИмяФайла(URL) ИмяФайла = URL; ИмяФайла = СтрЗаменить(ИмяФайла, "file:///", ""); ИмяФайла = СтрЗаменить(ИмяФайла, "%20", " "); ИмяФайла = СтрЗаменить(ИмяФайла, "/", ""); Возврат ИмяФайла; КонецФункции |
|||
12
aka AMIGO
09.12.14
✎
13:55
|
(11) Угу.. логично.. Спасибо, друже!
А я нашел ошибку-несоответствие ХР и 7-ки: Вот она, зараза.. Создал новую переменную МойФайл = СокрЛП(СтрЗаменить(ЕхФайл, "\", "/")); И уж её вставляю в оператор: Document = Desktop.LoadComponentFromURL("file:///" + МойФайл , "_blank", 0, Массив); Вот, кто-б мог подумать, что пробелы в имени файла справа в 7-ке мешают?!?! Однако!.. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |