Показать сообщение отдельно
Старый 16.06.2015, 11:53   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от 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 = (...);
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: d_alexe (1).