Из скрипта не видно функцию вызываемую из используемого скрипта

Я пользуюсь утилитой синхронизации Террасофт и 1С, которую можно скачать с сайта Террасофт.
Решил на событие, возникающее после добавления импортируемой записи, написать обработку дополнительную. Открыл окно настройки синхронизации, открыл окно настройки справочника "Договора" (ТС) и "Клиенты" (1С), нажал на кнопку [Редактировать скрипт]. Был создан скрипт, в котором я на событие OnAfterRecordImport вызываю мной написанную функцию UpdateCustomerInContractBy1C(Code1C)из скрипта scr_General1CUtils.
При запуске импорта выскакивает ошибка:

Предполагается наличие объекта

скрипт не видит функцию UpdateCustomerInContractBy1C(Code1C)

В чем проблема? Функция эта есть в используемом скрипте. Передобавлял этот скрипт заново в скрипт обработки события.

Нравится

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

Могли бы Вы показать текст скрипта scr_Dataflow1CUtils?

Весь не могу показать, поскольку в нем есть существенные доработки.
В скрипте Dataflow\Library\scr_Dataflow1CUtils заменил все вхождения 'OnAfterImportPost' на 'OnAfterRecordImport, чтобы отрабатывал вызов соответствующией функции из скрипта настроек импорта.
Что именно вас интересует?

У меня есть догадка, что дело в функции SafeExecScriptFunction. Она должна иметь такой вид:

function SafeExecScriptFunction(ScriptItem, FunctionName, Param, Dataset, Select1C) {
	if (!Assigned(ScriptItem) || IsEmptyValue(FunctionName)) {
		return; 
	}
	var Result = ScriptItem.ScriptControl.Run(FunctionName, Param, Dataset, Select1C);
	return Result;
}

У меня эта функция имеет следующий вид:

function SafeExecScriptFunction(ScriptItem, FunctionName, Param, Dataset, Select1C) {
	if (!Assigned(ScriptItem) || IsEmptyValue(FunctionName)) {
		return; 
	}
	if (ScriptItem.GetMethodNames().indexOf(FunctionName) != -1) {
		ScriptItem.ScriptControl.Run(FunctionName, Param, Dataset, Select1C);
	}
}

Подскажите, пожалуйста, скрипт scr_Dataflow1CUtils часто меняется? Если можно, прикрепите к теме его последнюю версию.

В последней версии обновлен не только этот скрипт но и многие другие. Последняя версия утилиты включена в 3.3.2 (в ближайшее время обновленная версия появится на community).

Спасибо, Максим. Вставил новое определение функции SafeExecScriptFunction и заработало.

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