Из скрипта не видно функцию вызываемую из используемого скрипта
Я пользуюсь утилитой синхронизации Террасофт и 1С, которую можно скачать с сайта Террасофт.
Решил на событие, возникающее после добавления импортируемой записи, написать обработку дополнительную. Открыл окно настройки синхронизации, открыл окно настройки справочника "Договора" (ТС) и "Клиенты" (1С), нажал на кнопку [Редактировать скрипт]. Был создан скрипт, в котором я на событие OnAfterRecordImport вызываю мной написанную функцию UpdateCustomerInContractBy1C(Code1C)из скрипта scr_General1CUtils.
При запуске импорта выскакивает ошибка:
скрипт не видит функцию UpdateCustomerInContractBy1C(Code1C)
В чем проблема? Функция эта есть в используемом скрипте. Передобавлял этот скрипт заново в скрипт обработки события.
Нравится
Могли бы Вы показать текст скрипта 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 и заработало.