Показать сообщение отдельно
Старый 06.08.2024, 23:23   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,709 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Физически, пакетное задание - это просто запись в таблице Batch. Далее соответствующая служба просматривает записи этой таблицы и используя сохраненные в ней настройки, запускает на выполнение соответствующий класс

Диалог от RunBaseBatch - это всего-лишь интерфейс для заполнения определенных реквизитов в создаваемой записи

Т.е. Ваша задача - это как раз сформировать запись таблицы Batch, используя те или иные инструменты

В общем случае, можно вообще без дополнительного класса, примерно так

X++:
    MyClass         taskBatch;
    BatchHeader     batchHeader;

    // Класс, который надо запустить в пакетном задании. Наследник от RunBase
    taskBatch = new MyClass();
    taskBatch.parm_1(xxx);
    taskBatch.parm_2(yyy);

    // Создание пакетного задания, которое запустится "немедленно"
    batchHeader = BatchHeader::construct();
    batchHeader.addTask(taskBatch);
    batchHeader.parmStartDateTime(DateTimeUtil::utcNow());
    batchHeader.save();
Наследник от RunBase, поскольку нужно, чтобы были методы pack/unpack для упаковки/распаковки параметров и метод run, который будет запускаться

Но, поскольку, все-равно придется делать "оболочку" над классом "release", то реквизиты пакетного задания указываются через объект

runBaseBatch.batchInfo()

а собственно создание пакетного задания - это команда

X++:
runBaseBatch.batchInfo().parmBatchExecute(true);
runBaseBatch.doBatch();
Так что, вполне можно обойтись без меню и без дополнительного диалога
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: S.Kuskov (10), Lankey (1).