![]() |
#33 |
Участник
|
Посмотрел.
У меня смена EDT и добавление методов отрабатывает после Tools\Caches\Refresh elements (нашел просто методом тыка сперва подумав где может быть) Синтаксическим переименованием не пользовался. С полпинка не заработало - как с methodStr так и с просто вызовом - не мог бы ты проверить (у меня вот такой main): X++: static void main(Args _args) { new SysOperationServiceController(classStr(TEST_HelloOp), methodStr(TEST_HelloOp, sayHello), SysOperationExecutionMode::Synchronous) .startOperation(); new TEST_HelloOp().sayHello(new TEST_HelloContract()); } Дело в том что для RunBase есть совершенно та же сама проблема: когда мы встаем на Run и вызываем перекрестные ссылки, то мы видим 1) В типичном случае одну ссылку из метода main того же класса 2) Дерево наследования, которое по хорошему тоже надо просмотреть. (Так как run можно вызвать везде, где можно вызвать runbase.run и из наследников данного класса тоже) У меня, в Ax6 187 таких ссылок (на runbase.run). Но это не является проблемой. Потому, что у нас есть априорное знание, что в типичном случае, мы вызываем наш RunBase и main этого же класса и + он вызывается из недр фреймворка при пакетной обработке. нам остается только проверить, что заданный случай сводится к типичному. Для этого мы 1. Ищем ссылки на run нашего класса + всех нефреймворковых наследников и предков. 2. Ищем ссылки на наш класс и проверяем, что там где он создан, он никуда не передается,а вызывается prompt и run Примерно по такой же схеме мы идем и в случае SysOperation - мы ищем ссылки на нашу операцию и убеждаемся, что дальше происходит только startOperation. Если сделать перекрестные ссылки, которые сразу показывают код - достаточно 1 клика (см атач) в нашем случае. Таким образом, у нас в этом вопросе нет существенной разницы между SysOperation и runbase - единственная разница в том, что к последней мы еще не привыкли. По поводу копипаста После копипаста надо еще не забыть переименовать. Один раз я долго тупил, пока не обнаружил, что в main вызывается другой класс. Еще была забавная ошибка, когда кто-то забыл добавить параметр "дата" в макрос для распаковки/упаковки и обнаружилось это только когда попробовали запихать класс в пакетное задание. Еще недавно попробовал поискать на типичные ошибки копипасты в коде приложения конструкции типа X++: switch (x) { case y: ... case y: ... } Последний раз редактировалось belugin; 31.03.2013 в 12:59. |
|
|
За это сообщение автора поблагодарили: mazzy (2), sukhanchik (2), Logger (3). |
Теги |
ax2012, runbase, runbasebatch, sysoperation framework |
|
|