22.04.2011, 09:46 | #21 |
Модератор
|
Бесплатно был в RCT.
Владимир, я понимаю Ваш наезд на "интеграторов". Грех не пнуть, будучи на клиенте Однако консультанты всегда оставляют описание модификаций. А когда разработка ведется на клиенте, на документирование никогда не хватает времени. И очень-очень редко ведется документирование. И то - если РП раньше работал в консалтинге С Уважением, Георгий |
|
22.04.2011, 09:55 | #22 |
Участник
|
Свой аргумент против сложности ведения справки снимаю
Но все-таки, нормальное задание на разработку, imho, намного полезнее, особенно если модификация затрагивает много объектов. Согласен, что можно было бы дублировать что-то в справке - но это двойная работа (которую, повторюсь, и первый раз выполняют не всегда хорошо).
__________________
Ivanhoe as is.. |
|
27.04.2011, 17:03 | #23 |
Участник
|
Настоящие программисты не то что справку, но и комментарии в программах не пишут Тем не менее, если вдруг найдется какой "не настоящий", который решится все-таки писать контекстную справку в Ax2009, то парочка обнаруженых (и исправленных) проблем.
Проблема 1 Если открыть форму настройки отчета и нажать кнопку F1, то будет вызвана справка по форме Dialog. А это не имеет смысла, поскольку эта форма общая для всех классов на базе класса RunBase. Чтобы исправить эту ошибку необходимо модифицировать метод формы \Forms\Dialog\Methods\task X++: int task(int task) { int ret; // RTG, 27.04.2011, Maksi --> TreeNode treeNode; str treeNodePath; RunBaseReportStd runBaseReportStd; ; #AOT // Если нажали F1, то следует вызвать справку по классу, созданному на основе RunBase из которого и вызвана форма диалога // Вызов справки по самой форме диалога - не имеет смысла, поскольку она одинаковая для всех классов-наследников if (task == #taskF1 && this.runBase()) { // Если вызов произошел из класса или наследника RunbaseReportStd, то это означает прямой вызов отчета // без обертки в виде RunBaseReport, поэтому надо обратится к узлу отчета if (SysDictClass::isEqualOrSuperclass(classIdGet(this.runBase()),classnum(RunBaseReportStd))) { runBaseReportStd = this.runBase(); treeNodePath = #ApplicationReportsPath + #AOTRootPath + runbaseReportStd.parmReportName(); } else { treeNodePath = #ApplicationClassesPath + #AOTRootPath + this.runBase().name(); } // info(treeNodePath); // debug treeNode = TreeNode::findNode(treeNodePath); treeNode.AOTedit(); } else // RTG, 27.04.2011, Maksi <-- { ret = super(task); } this.callCallerTask(task); return ret; } Проблема 2 Если войти в режим редактирования справки нажав кнопку "Править", то в открывшемся окне недоступны объекты ToolBar отвечающие за изменение стиля, имени и размера шрифта. Чтобы "включить" эти объекты необходимо модифицировать метод формы \Forms\SysInetHTMLEditor\Methods\refreshToolbars X++: void refreshToolbars() { // RTG, 20.04.2011, Maksi --> //boolean state; int state; // RTG, 20.04.2011, Maksi <-- ... } |
|
|
За это сообщение автора поблагодарили: AlGol (2), Logger (5), gl00mie (3), SVlk (1). |
11.05.2011, 16:11 | #24 |
Участник
|
Проблема 3
В режиме редактирования справки, если в тексте справки создать таблицу, то использование пункта меню "Свойства ячейки..." (из контекстного меню или из меню в заголовке формы) никак не влияет на свойства ячейки. Ошибка в методе формы \Forms\SysInetHTMLEditor\Methods\runTool Там при определении факта существования метода вместо имени метода использовали значение, которое должно быть передано в метод. Как следствие, условие if() всегда возвращало false X++: case #TOOL_CELLPROPERTIES: selectedElement = element.getElementUnderCaret(false); selectedElement = element.getTableCellElement(selectedElement); if (!selectedElement) return; f = classfactory.formRunClass(new Args(formstr(SysInetHTMLTableProperties))); // 11.05.2011, Maksi --> //if(formHasMethod(f,identifierstr(isTable)) && formHasMethod(f,identifierstr(axcEditorNormal)) && formHasMethod(f,identifierstr(setElement))) if(formHasMethod(f,identifierstr(isTable)) && formHasMethod(f,identifierstr(setEditor)) && formHasMethod(f,identifierstr(setElement))) // 11.05.2011, Maksi <-- { o = f; o.isTable(false); o.setEditor(acxEditorNormal); o.setElement(selectedElement); } f.run(); f.wait(); break; |
|
Теги |
ax2009, help update, документация, справка |
|
|