Возращение результата?

Добрый день! Подскажите пожалуйста данная строка вернет результат выполнения функции Test true или она вообще не возращает результат выполнения ????

ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C);

function Test{
   return true;
}

Нравится

12 комментариев

Run же два параметра принимает - имя функции и параметр. Вот во втором это true и вернется, как элемент массива.

То есть не подскажите как это выглядит. мне например нужно сравнить

if (ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C)){
 Dataset.post();
}
else{
 Dataset.cancel();
}

Сорри, я вас обманул - послеобеденная дрема дала о себе знать:) Метод Run как раз и возвращает OleVariant, который содержит результат выполнения функции. С подготовкой параметров для функции скрипта я не уверен, но кажется туда VBArray передается, который содержит парамтры выполняемой функции.

Вот пример, думаю несложно разобраться будет

http://blogs.msdn.com/david.wang/archive/2006/07/04/HOWTO-Convert-between-JScript-Array-and-VB-Safe-Array.aspx

Максим, результат Вашей функции действительно можно получать так, как Вы написали:

var Value = ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C);

Но это только в случае, если Ваша функция имеет вид:

function Test(Param, Dataset, Select1C) {...}

В вызове ScriptItem.ScriptControl.Run('Test'...) после названия функции идут значения, которые необходимо передать в функцию в качестве фактических параметров.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

То есть я понял в в переменную Value присвоится значение true? или вот так Value[2] = true;

В переменную Value присвоится значение true.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

А если функция function Test(Param, Dataset, Select1C) {...}
находиться не в том же скрипте что и
var Value = ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C);
вызов???? В дебаггере пишет что Value = undifine ???

А что у вас содержится в ScriptItem?

В общем это строка из скрипта интеграции с 1С которая вложена на сайте

var Value = SafeExecScriptFunction(ScriptItem, 'OnBeforeRecordImport', Param, Dataset, Select1C);				
if (Value) {
   Dataset.post();
}else {
   Dataset.cancel();
}

а вот это функция на которую я хочу повесить возврат результата сохранять или нет строку

function OnBeforeRecordImport(Param, Dataset, Select1C) {
	//
ну это просто для проверки
	return true;
}

Может я непонятно выражаюсь???

Максим, имелось в виду, какой объект Вы передаёте в качестве первого параметра (ScriptItem) при вызове функции. Вы смотрели значение переменной ScriptItem в отладчике?

В случае, если Ваша функция находится не в том скрипте, откуда Вы её вызываете, а в другом, можно поступить так. Пусть ScriptUSI - код скрипта, в котором содержится объявление функции Test. Тогда

var ScriptItem = Services.GetNewItemByUSI(ScriptUSI);
var Value = ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C);

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Показать все комментарии