Как известно, в администраторе не все работает так, как должно (другая платформа, отсутствует окружение и т.д.)...
Делал задание для планировщика и столкнулся именно с этой заминкой (в датасете не заполнялся UpdateQuery). Надо скрипт запускать из клиента. Т.к. скрипт для планировщика - добавил задание и сел ждать...
Ждать не понравилось. Кому также не хочется ждать, тому пригодится:
1. Добавляем CheckBox (или отдельную кнопку - я сделал на событие btnOKOnClick)
2. Меняем в wnd_JobMethodsEditScript
2.1. Подключаем scr_JobManagerUtils
2.3. Вносим изменения в function btnOKOnClick
if (!dlData.Dataset('ProcedureName')) {
ShowInformationDialog(FormatStr(RequiredFieldError, "Метод"));
return;
}
SaveParams(dlData.Dataset); // если делаете отдельную кнопку добавьте эту функцию
// Start
if (chbTest.IsChecked) {
var Dataset = dlData.Dataset;
var Params = GetActivitiesParams(Dataset.Datafields('MethodParameters'));
var MethodName = edtMethodList.Value;
ExecFunction(Dataset.DisplayValues('ScriptUSI'), MethodName, Params);
return;
}
// End
scr_BaseDBEdit.btnOKOnClick(Control);
}
Результат: галочку ставим - скрипт выполняется (можно посмотреть, что получилось), но шаг не сохраняется. галочку убираем - все как обычно
Я делал только для скриптов, если хотите для остальных типов тоже - добавьте аналогичную логику в окнах из раздела JobManager\Activities\, используя function ExecuteJobStep(Dataset), либо - на событие BeforePost датасета ds_JobMethods (нужно добавлять в окно не CheckBox а булево поле - и с него запускать или нет)
Дополнение:
Чтобы добавить возможность вызова функций скрипта прямо в главное окно:

Надо:
1. В wnd_Main в невизуальных компонентах добавить ActionMenuItem в нужное вам место и определить для него событие OnExecute:

2. В скрипте scr_Main:
2.1. Чтобы пункт меню был доступен только админам, надо в function InitializeAdminMenuItems() добавить строку amiRunScipt.IsVisible = IsAdmin;
2.2. Описать добавленное событие:
[javascript]
function amiRunSciptOnExecute(ActionMenuItem, Sender) { // sfera
var Attributes = GetNewDictionary();
Attributes.Add('IsTest', true);
ShowEditWindowEx('wnd_JobMethodsEdit', Attributes, null, null, true);
}
[/javascript]
3. В wnd_JobMethodsEditScript
3.1. исправить function wnd_JobMethodsEditOnPrepare(Window):
[javascript]
function wnd_JobMethodsEditOnPrepare(Window) {
JobMethodsEdit.IsPreparing = true;
var IsTest = !!Window.Attributes('IsTest'); //признак запуска из созданного нами пункта меню
if (IsTest) Window.Attributes('RecordID') = GUID_NULL; //нужно, чтобы BaseDBEdit воспринял это как добавление записи, а не как редактирование
wnd_BaseDBEditOnPrepare(Window);
Initialization(Window);
JobMethodsEdit.IsPreparing = false;
if (IsTest) { // от греха подальше, запрещаем возможность снять галочку "Потестим"
chbTest.IsChecked = true;
chbTest.IsEnabled = false;
edtCaption.DataField.Value = 'test';
}
edtCaption.IsVisible = !IsTest; // и скрываем поле "Название", т.к. не надо
}
[/javascript]
PS. Можно не замарачиваться с окошком - а вызывать function ExecFunction, передавая ей нужные параметры, но это не очень удобно.