|
|
|
1C 7.7 + jscript как получить результат? | ☑ | ||
|---|---|---|---|---|
|
0
MaxPiter
12.01.11
✎
12:06
|
Добрый день.
Подскажите как получить результат выполнения скрипта в 1С? Это пример: Процедура Сформировать() scriptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl"); WScript = СоздатьОбъект("WScript.Shell"); scriptCtrl.Language="jscript"; scriptCtrl.AddObject("WScript",WScript); Попытка scriptCtrl.AddCode(" |function Start() |{ | var Outobj=WScript.Exec(""cscript D:\\test.js 8""); | StrOut= Outobj.Stdout.ReadAll(); |} |"); Исключение Сообщить("Текст ошибки: "+scriptCtrl.Error.Text); Сообщить("Строка ошибки: "+scriptCtrl.Error.Line); КонецПопытки; Сообщить(scriptCtrl.run("Start")); КонецПроцедуры и сам скрипт: d:\test.js var ms='0'; var oArg=WScript.Arguments; if (WScript.Arguments.Count()>0) ms=oArg(0); switch (ms) { case '0' : mes='січень'; break; case '1' : mes='лютий'; break; case '2' : mes='березень'; break; case '3' : mes='квітень'; break; case '4' : mes='травень'; break; case '5' : mes='червень'; break; case '6' : mes='липень'; break; case '7' : mes='серпень'; break; case '8' : mes='вересень'; break; case '9' : mes='жовтень'; break; case '10' : mes='листопад'; break; case '11' : mes='грудень'; break; } WScript.StdOut.Write(mes); |
|||
|
1
MaxPiter
12.01.11
✎
12:06
|
При выполнении выводит пусто.
|
|||
|
2
medved_kot
12.01.11
✎
13:27
|
oArg(0) - это разве не строка - D:\\test.js
Если первый аргумент, то можно попробовать удалить пробелы |
|||
|
3
ДенисЧ
12.01.11
✎
13:28
|
А сам скрипт-то значение возвращает? Нэ выжу.
|
|||
|
4
dk
12.01.11
✎
13:32
|
засунь текст скрипта в функцию и верни ее значение
|
|||
|
5
dk
12.01.11
✎
13:37
|
через eval
|
|||
|
6
dk
12.01.11
✎
13:47
|
раз никого нету
----- как-то так |
|||
|
7
Лефмихалыч
12.01.11
✎
13:53
|
Результат = scriptCtrl.CodeObject.Start();
|
|||
|
8
medved_kot
12.01.11
✎
14:07
|
Почему в коде (0) обрабатывается ошибка записи кода явы, а не его исполнения.
|
|||
|
9
MaxPiter
12.01.11
✎
14:21
|
Спасибо за ответы, сейчас буду пробовать.
|
|||
|
10
MaxPiter
12.01.11
✎
14:25
|
(6) Возвращает OLE.JScriptTypeInfo
Как бы все таки результат :) |
|||
|
11
MaxPiter
12.01.11
✎
14:26
|
(6) и |end function лишнее
|
|||
|
12
DrZombi
гуру
12.01.11
✎
14:29
|
(11)Человек, в (6) тебе дали подсказку, что бы ты не извращался и не вызывал скрипт из файла. А просто написал сам скрипт и выполнил :)
|
|||
|
13
MaxPiter
12.01.11
✎
14:36
|
(12) я как бы использовал код в 6 но возвращается не значение а OLE.JScriptTypeInfo
Видимо его надо перед выводом как-то преобразовать в значения для 1С. И то что тут код - это простейший пример, чтобы понять как вообще с этим хозяйством работать из 1С |
|||
|
14
Лефмихалыч
12.01.11
✎
14:38
|
решение в (7) без всяких йевалов
|
|||
|
15
MaxPiter
12.01.11
✎
14:45
|
(14) все равно возвращает OLE.JScriptTypeInfo
|
|||
|
16
Лефмихалыч
12.01.11
✎
14:47
|
(15) пеляет!.. это потму, что ты неправильно этим всем пользуешься.
Показывай свой скрипт, покажу, как надо |
|||
|
17
Лефмихалыч
12.01.11
✎
14:53
|
|
|||
|
18
DrZombi
гуру
12.01.11
✎
14:56
|
+(0)для справки почитай: http://www.script-coding.com/
|
|||
|
19
MaxPiter
12.01.11
✎
15:08
|
(17) спасибо - этот код работает
p.s. только Сообщить(scriptCtrl.CodeObject.xoxloMonth(11)); заменить на Сообщить(scriptCtrl.CodeObject.xoxloMonth("11")); |
|||
|
20
Лефмихалыч
12.01.11
✎
15:08
|
(19) ага, а еще в конце не забыть scriptCtrl = Неопределено;
а то горя хапнешь при повторных запусках |
|||
|
21
dk
12.01.11
✎
15:09
|
(19) потому что case у тебя строки сравнивает
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |