11.07.2019, 14:38 | #1 |
Участник
|
sysoperation framework просто пакетное задание
Добрый день,
В рамках изучения sysoperation framework написал 3 класса: 1) Contract class: X++: // Объявление класса Contract // Атрибут указывает, что класс является Contract классом [DataContractAttribute] class SimpleBatchJobContract { str text; } // Метод для установления и получения значения переменной класса Contract [ // Атрибут определяет элемент данных, который будет использоваться Service классом DataMemberAttribute('Text'), // Метка поля диалога SysOperationLabelAttribute("@ICL363"), // Атрибут видимости на диалоге SysOperationControlVisibilityAttribute(true)] public str parmText (str _text = text) { text = _text; return text; } X++: // Объявление класса-наследника SysOperationServiceBase class SimpleBatchJobService extends SysOperationServiceBase { } // Метод, выполняющий основную логику класса Service // Атрибут указывает, что проверки авторизации выполняются для метода, который был вызван на сервере [SysEntryPointAttribute] public void run(SimpleBatchJobContract _batchJobContract) { ; try { // Вывод текста, указанного в форме диалога info(strFmt('%1',_batchJobContract.parmText())); } catch { // Вывод имени функции в случае ошибки info(funcName()); } } X++: // Объявление класса-наследника SysOperationServiceController class SimpleBatchJobController extends SysOperationServiceController { } // Данный метод содержит описание задачи public ClassDescription caption() { return("Пример простого пакетного задания"); } // Метод указывает Service класс protected void initService() { // Указание класса Service this.parmClassName(classStr(SimpleBatchJobService)); // Указание метода Service класса, который будет запущен this.parmMethodName(methodStr(SimpleBatchJobService, run)); // Указание режима запуска класса Service this.parmExecutionMode(SysOperationExecutionMode::Synchronous); } // Метод-конструктор класса SimpleBatchJobController public static SimpleBatchJobController construct() { // Получение экземпляра класса SimpleBatchJobController return new SimpleBatchJobController(); } // Метод, вызывающий диалоговое окно для запуска задания public static void main(Args _args) { SimpleBatchJobController controller; ; // Получение экземпляра класса controller = SimpleBatchJobController::construct(); // Указание Service класса controller.initService(); // Запуск формы controller.startOperation(); } No metadata class defined for data contract object Подскажите пожалуйста что я сделал не так? Заранее спасибо. |
|
11.07.2019, 15:52 | #2 |
Banned
|
Попробуйте Refresh / AOD cache aka. Refresh elements сделать.
|
|
|
За это сообщение автора поблагодарили: dark_knight (1). |
11.07.2019, 17:40 | #3 |
Участник
|
это странно но мне помогло затирание комментов в методе class declaration contract класса. вот так
X++: [DataContractAttribute] class SimpleBatchJobContract { str text; } |
|
|
|