|
![]() |
#1 |
Участник
|
Цитата:
В общем случае, в методе new() не должно быть вообще никакого кода. Перекрытие этого метода - это "заглушка", чтобы не переписывать кучу классов-наследников. При "штатном" проектировании такого быть не должно! Перепишите Ваш класс таким образом, чтобы параметр передавался ПОСЛЕ создания экземпляра класса. Через специально созданный для этого метод Вашего класса. Обычно это делается в методе main() примерно так X++: static void main(Args args) { MyClass myClass; ; myClass = new MyClass(); // Создается метод, для приема параметра и его обработки myClass.initFromArgs(args); if (myClass.prompt()) myClass.run(); } Если опустить некоторые подробности, то при выполнении пакетного задания выполняются следующие методы (запуск пакетного задания - это метод \Classes\BatchRun\runJobStatic()) X++: myClass = new MyClass(); // БЕЗ передачи параметра!!! myClass.parmInBatch(true); // Признак того, что класс выполняется в пакетном режиме myClass.unpack(); // Передаются те значения, которые были указаны при настройке пакетного режима myClass.run(); // Выполнение класса X++: if (this.h()) { // Выполняется пакетная обработка pivotTableType = (...); }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: d_alexe (1). |
![]() |
#2 |
Участник
|
Владимир Максимов, я имел ввиду, что я пытаюсь выбрать класс в форме Batch, когда определяю список задач пакета (см. картинку). При этом, вылетает дебаггер не дождавшись выпадения лукапа (на скрине ранее)...
причем, я не могу поменять "запустить из местоположения"... может это с этим связано? Последний раз редактировалось Vasiliusis; 16.06.2015 в 12:27. |
|
![]() |
#3 |
Участник
|
Это естествено. Для того чтобы появился лукап в этой форме, DAX перебирает все классы наследники RunBaseBatch и чтобы определить можно ли этот класс использовать в журналах пакетных заданий, пытается создать объект этого класса и вызвать его метод canGoBatchJournal. Вот при создании через SysDictClass вызывается метод new, DAX в этом случае не передает параметры, но как сами видите, у этого класса параметр ожидается.
|
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
![]() Это естествено. Для того чтобы появился лукап в этой форме, DAX перебирает все классы наследники RunBaseBatch и чтобы определить можно ли этот класс использовать в журналах пакетных заданий, пытается создать объект этого класса и вызвать его метод canGoBatchJournal. Вот при создании через SysDictClass вызывается метод new, DAX в этом случае не передает параметры, но как сами видите, у этого класса параметр ожидается.
Последний раз редактировалось Vasiliusis; 16.06.2015 в 13:18. |
|
![]() |
#5 |
MCT
|
Цитата:
![]() пример Главная книга / Периодические операции / Пересчитать сальдо по периодам - вы сразу попадаете на закладку пакет. Ставим флаг "Пакетная обработка", выбираем группу пакетов - по ок будет создано пакетное задание. Хотя вручную (через Основное / Запросы / Пакетное задание) вы его вряд ли создадите )
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try. |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от d&m
![]() на диалоге многих функций есть закладка Пакет - так и были добавлены
![]() пример Главная книга / Периодические операции / Пересчитать сальдо по периодам - вы сразу попадаете на закладку пакет. Ставим флаг "Пакетная обработка", выбираем группу пакетов - по ок будет создано пакетное задание. Хотя вручную (через Основное / Запросы / Пакетное задание) вы его вряд ли создадите ) |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
![]() Это естествено. Для того чтобы появился лукап в этой форме, DAX перебирает все классы наследники RunBaseBatch и чтобы определить можно ли этот класс использовать в журналах пакетных заданий, пытается создать объект этого класса и вызвать его метод canGoBatchJournal. Вот при создании через SysDictClass вызывается метод new, DAX в этом случае не передает параметры, но как сами видите, у этого класса параметр ожидается.
"Тупо" подправить те классы, на которых вылетает debugger. Насколько я помню, RPayHRMPivotReportEngine - это единственный из стандартных классов у которого подобная ошибка. Просто добавь условие X++: // класс RPayHRMPivotReportEngine public void new(Args _args) { ; super (); if (_args) // Исправление ошибки формирования пакетных заданий, 16.06.2015 { pivotTableType = _args.parmEnum(); } pivotTableMetadata = new RPayHRMPivotTableMetaData(); pivotTableData = new RPayHRMPivotTableData(); this.initPivotCodeNameFields(); }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Vasiliusis (1). |
![]() |
#8 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
![]() "Тупо" подправить те классы, на которых вылетает debugger. Насколько я помню, RPayHRMPivotReportEngine - это единственный из стандартных классов у которого подобная ошибка. Просто добавь условие
X++: // класс RPayHRMPivotReportEngine public void new(Args _args) { ; super (); if (_args) // Исправление ошибки формирования пакетных заданий, 16.06.2015 { pivotTableType = _args.parmEnum(); } pivotTableMetadata = new RPayHRMPivotTableMetaData(); pivotTableData = new RPayHRMPivotTableData(); this.initPivotCodeNameFields(); } |
|
Теги |
batch, пакетная обработка |
|
|