| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Открыть в новом окне объект из кода
			 
			
			Если кликнуть в какой-нибудь участок кода и выбрать NewWindows, то система проанализирует на каком объекте мы стоим и откроет этот объект в новом окне. 
		
		
		
		
		
		
		
		
			Если это табличная переменная, система сделает анализ от какой таблицы она образована и откроет эту таблицу. Выделять объект не надо. Просто ткнуть в этот объект. Добавить в класс EditorScripts. X++: void AA_NewWindow(Editor e) { TreeNode treeNode = TreeNode::findNode(e.path()); TmpxRefReferences tmpxRefReferences; Column nCol = e.columnNo() + 1; Line nLine = e.currentLineNo() + 1; ; treeNode.AOTmakeXref(1); tmpxRefReferences = xRefCreate::makeTmp(infolog.lastxRef()); select firstonly tmpxRefReferences order by Column desc where tmpxRefReferences.line == nLine && tmpxRefReferences.Column <= nCol; if (!tmpxRefReferences) return; treeNode = TreeNode::findNode(tmpxRefReferences.path()); if (treeNode) treeNode.AOTnewWindow(); } Последний раз редактировалось miklenew; 29.05.2008 в 12:17.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2), AlGol (1), kashperuk (5), Logger (4), Eldar9x (5), alex55 (1), Dima_Dima (1), Kabardian (5). | |
| 
			
			 | 
		#2 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну, проапргейдил бы в том же первом посте или это в учебных (так сказать, эволюционных) целях?  
		
		
		
		
		
		
		
	![]() Я пользуюсь на эту тему наработками Вани Kashperuk Ivan: EditorScripts.addIns_OpenInAOT() script updateHO... Kashperuk Ivan: AxGoToDeclarationI haven't posted in a while. W... и "Сидаксом" Макса Белугина [ANN] Sidax 0.3.6 - многоцелевая боковая панель для Axapta  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: kashperuk (2). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Кстати, если это работает и не требует наличия перекрестных ссылок (вот в этом я сомневаюсь) - то это решение намного быстрее и элегантнее, чем мои наработки. 
		
		
		
		
		
		
			
		
		
		
		
	Завтра попробую поэкспериментировать с этим кодом.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Gustav (11), miklenew (2). | |
| 
			
			 | 
		#4 | 
| 
			
			 Moderator 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 SAP 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а куда в 4ке дели ParserClass?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			нету его больше (поищите сообщение от Мариночки)
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
		
			Сообщение от Gustav
			 
 
			Я пользуюсь на эту тему наработками Вани 
		
	Kashperuk Ivan: EditorScripts.addIns_OpenInAOT() script updateHO... Kashperuk Ivan: AxGoToDeclarationI haven't posted in a while. W... Вторая понравилась. Спасибо. Буду пользоваться. Автору респект и уважуха. Цитата: 
	
		
			Сообщение от Gustav
			 
 
			и "Сидаксом" Макса Белугина 
		
	[ANN] Sidax 0.3.6 - многоцелевая боковая панель для Axapta Завтра поставлю посмотрю. Последний раз редактировалось miklenew; 28.05.2008 в 19:19.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
tmpxRefReferences система сама хитро делает без ссылок. Конструкция X++:     treeNode.AOTmakeXref(1);
    tmpxRefReferences = xRefCreate::makeTmp(infolog.lastxRef()); | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: kashperuk (2), Logger (3). | |
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Огого ! 
		
		
		
		
		
		
		
	в 3-ке тоже работает ! И без всяких перекрестных ссылок !  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
1) нет русскоязычной версии. 2) нет хорошой доки к продукту. Хоть продукт и серъёзный, работа была проделана огромная, но без этих двух вещей пользоваться наверно не буду. (Ни к чему не призываю, обидеть никого не хочу, просто это дело привычек).  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
 
		 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Немного модифицированная версия (исправлен небольшой баг) для АХ 2009 и АХ 4.0 
		
		
		
		
		
		
			
		
		
		
		
	X++: public void addIns_OpenInAOT(Editor e) { #AOT TreeNode treeNode = TreeNode::findNode(e.path()); xRefTmpReferences xRefTmpReferences; Column nCol = e.columnNo() + 1; Line nLine = e.currentLineNo() + 1; ; treeNode.AOTmakeXref(1); xRefTmpReferences = xRefCreate::makeTmp(infolog.lastxRef()); select firstonly xRefTmpReferences order by Column desc where xRefTmpReferences.line == nLine && xRefTmpReferences.Column <= nCol; if (!xRefTmpReferences) return; treeNode = TreeNode::findNode(xRefTmpReferences.path()); if (treeNode) treeNode.AOTnewWindow(); }  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: miklenew (3), alex55 (1). | |
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Исправил в первоначальном посте. Для 3.0. Разница между 4.0 и 3.0 не большая, похоже в 4.0 не много изменилось имя таблицы TmpxRefReferences стала xRefTmpReferences.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вместо Sidax лучше попробуй Tabax - там точно есть поддержка нескольких языков + больше полезной функциональности и возможность использования плагинов (есть у меня пару интересных  
		
		
		
		
		
		
			
		
		
		
		
	 )
		 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А как плагины используешь? Добавляешь ещё одну кнопку в панель?  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вот здесь все написано 
		
		
		
		
		
		
			
		
		
		
		
	http://www.axaptapedia.com/Tabax По сути, плагины бывают 2 типов: - картинку нужно положить в определенную папочку (картинка обычно идет вместе с проектом) - просто загрузить проект - картинка используется или стандартная или извратно хранится непосредственно в ХРО ![]() Перечень плагинов доступных там на страничке тоже приведен  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Masia еще сделала возможность делать плагины ресурсами (актуально для Ax4, где общей шары у пользователей может не быть), но я пока  не вливал эти изменения. 
		
		
		
		
		
		
		
	А вот фича - получения скриншота текущего окна внутри аксапты по Shift + кнопка "Копировать" \Forms\Tabax\Methods\copyActiveWindowScreenShot X++: void copyActiveWindowScreenShot() { Image image = new Image(); ; image.captureWindow(topmost); image.clipboardCopy(); } X++: void clicked() { SysContextMenu context; TextBuffer buf=new TextBuffer(); TreeNode node; boolean first=true; ; if (WinApi::isShiftButtonDown() && !WinApi::isControlButtonDown()) { element.copyActiveWindowScreenShot(); } else { if (element.currentFormRun()) { buf.appendText(element.AxPath_fromFormRun(element.currentFormRun())); buf.toClipboard(); } else { context = element.currentSysContextMenu(); if (hasSecurityKeyAccess(securityKeyNum(SysDevelopment), AccessType::Edit) && context) { node = context.first(); while(node) { buf.appendText( (!first ? "\r\n" :"") + (WinApi::isControlButtonDown() ? (WinApi::isShiftButtonDown() ? element.AxPath_fromTreeNode(node) : node.treeNodePath() ) : node.treeNodeName() ) ); node=context.next(); first=false; } context.finalize(); buf.toClipboard(); } } } }  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: alex55 (1). | |
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А как в этом случае можно переписать код скрипта gotoDeclaration ? 
		
		
		
		
		
		
		
	Т.е. не открыть окно с объявлением типа, а перейти туда где объявлена соответствующая переменная ?  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			xppscanner + собственный синтаксический разбор
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |