Цитата:
Сообщение от
Vasiliusis
Благодарю за ответы!
Тем не менее, при попытке выбрать класс (либо свой, либо заводской) выходит ошибка. Что не так?
А вот не надо в метод New() передавать параметр! При пакетной обработке экземпляр класса создается БЕЗ передачи параметра.
В общем случае, в методе new() не должно быть вообще никакого кода. Перекрытие этого метода - это "заглушка", чтобы не переписывать кучу классов-наследников. При "штатном" проектировании такого быть не должно!
Перепишите Ваш класс таким образом, чтобы параметр передавался ПОСЛЕ создания экземпляра класса. Через специально созданный для этого метод Вашего класса. Обычно это делается в методе main() примерно так
X++:
static void main(Args args)
{
MyClass myClass;
;
myClass = new MyClass();
// Создается метод, для приема параметра и его обработки
myClass.initFromArgs(args);
if (myClass.prompt())
myClass.run();
}
В общем случае, может быть создан еще статический метод Construct() в который и передается параметр, но это просто объединение метода new() и метода обработки параметра в одном месте.
Если опустить некоторые подробности, то при выполнении пакетного задания выполняются следующие методы (запуск пакетного задания - это метод \Classes\BatchRun\runJobStatic())
X++:
myClass = new MyClass(); // БЕЗ передачи параметра!!!
myClass.parmInBatch(true); // Признак того, что класс выполняется в пакетном режиме
myClass.unpack(); // Передаются те значения, которые были указаны при настройке пакетного режима
myClass.run(); // Выполнение класса
Это значит, что если Вы хотите инициализировать какие-либо значения, которые не сохраняются в методе pack(), то их формирование надо выполнять в методе run() добавив условие выполнения пакета. Как-то так
X++:
if (this.h())
{
// Выполняется пакетная обработка
pivotTableType = (...);
}