Добрый день! Подскажите пожалуйста данная строка вернет результат выполнения функции Test true или она вообще не возращает результат выполнения ????
function Test{
return true;
}
Нравится
Run же два параметра принимает - имя функции и параметр. Вот во втором это true и вернется, как элемент массива.
То есть не подскажите как это выглядит. мне например нужно сравнить
[javascript]
if (ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C)){
Dataset.post();
}
else{
Dataset.cancel();
}
[/javascript]
Сорри, я вас обманул - послеобеденная дрема дала о себе знать:) Метод Run как раз и возвращает OleVariant, который содержит результат выполнения функции. С подготовкой параметров для функции скрипта я не уверен, но кажется туда VBArray передается, который содержит парамтры выполняемой функции.
Вот пример, думаю несложно разобраться будет
Максим, результат Вашей функции действительно можно получать так, как Вы написали:
[javascript]
var Value = ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C);
[/javascript]
Но это только в случае, если Ваша функция имеет вид:
[javascript]
function Test(Param, Dataset, Select1C) {...}
[/javascript]
В вызове 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 ???
В общем это строка из скрипта интеграции с 1С которая вложена на сайте
[javascript]
var Value = SafeExecScriptFunction(ScriptItem, 'OnBeforeRecordImport', Param, Dataset, Select1C);
if (Value) {
Dataset.post();
}else {
Dataset.cancel();
}
[/javascript]
а вот это функция на которую я хочу повесить возврат результата сохранять или нет строку
[javascript]
function OnBeforeRecordImport(Param, Dataset, Select1C) {
//
ну это просто для проверки
return true;
}
[/javascript]
Максим, имелось в виду, какой объект Вы передаёте в качестве первого параметра (ScriptItem) при вызове функции. Вы смотрели значение переменной ScriptItem в отладчике?
В случае, если Ваша функция находится не в том скрипте, откуда Вы её вызываете, а в другом, можно поступить так. Пусть ScriptUSI - код скрипта, в котором содержится объявление функции Test. Тогда
[javascript]
var ScriptItem = Services.GetNewItemByUSI(ScriptUSI);
var Value = ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C);
[/javascript]
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.