Добрый день! Подскажите пожалуйста данная строка вернет результат выполнения функции Test true или она вообще не возращает результат выполнения ????
function Test{
return true;
}
Нравится
Run же два параметра принимает - имя функции и параметр. Вот во втором это true и вернется, как элемент массива.
То есть не подскажите как это выглядит. мне например нужно сравнить
if (ScriptItem.ScriptControl.Run('Test', Param, Dataset, Select1C)){ Dataset.post(); } else{ Dataset.cancel(); }
Сорри, я вас обманул - послеобеденная дрема дала о себе знать:) Метод Run как раз и возвращает OleVariant, который содержит результат выполнения функции. С подготовкой параметров для функции скрипта я не уверен, но кажется туда VBArray передается, который содержит парамтры выполняемой функции.
Вот пример, думаю несложно разобраться будет
Максим, результат Вашей функции действительно можно получать так, как Вы написали:
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 ???
В общем это строка из скрипта интеграции с 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.