| 
			
			 | 
		#141 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
		
			Плагин — это класс, у которого есть свойство Tabax и название которого начинается на TabaxPlugin_
		
	 
 , а по наследованию от класса SysConsistencyCheck, заодно в этом классе определяется и интерфейс для плагинов, и вспомогательные функции, которые плагины могут использовать, наподобие метода SysConsistencyCheck.kernelCheckTable().
		 | 
| 
	
 | 
| 
			
			 | 
		#142 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Но тогда с Табаксом пришлось бы параллельно распространять класс базовый. Чего и хочется избежать 
		
		
		
		
		
		
			
		
		
		
		
	Цитата: 
	
		
			Сообщение от belugin
			
			 
Требования  
		
	Tabax должен состоянть из одной формы и больше из ничего  | 
| 
	
 | 
| 
			
			 | 
		#143 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И еще где-то кешировать найденные плагины т.к. насколько я помню по игрищам с документооборотом extendedBy() довольно медленная штуковина
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#144 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Imho по-любому дожен быть 1) формализованный интерфейс для плагина с поддержкой версионности; 2) формализованный интерфейс для Табакса и его сервисных функций, предоставляемых плагину, с поддержкой версионности. Посмотрите на Far Manager plugin API, посмотрите на Winamp plugin API, посмотрите на COM-интерфейсы, в конце концов...  | 
| 
	
 | 
| 
			
			 | 
		#145 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#146 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Пока в аксапте нет пакетов, внутренних классов или делегатов я постараюсь сделать чтобы табакс было сложно случайно испортить и чтобы он занимал поменьше визуального пространства в АОТ. Я в курсе насчет плагинов в фаре, эклипсе, Trac и ... У аксапты свои ограничения, свои традиции и своя область использования и стоит это учитывать.  | 
| 
	
 | 
| 
			
			 | 
		#147 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И это пишет человек, говоривший мне об абстрактных классах и интерфейсах!  
		
		
		
		
		
		
		
	  Цитата: 
	
		
			Пока в аксапте нет пакетов, внутренних классов или делегатов я постараюсь сделать чтобы табакс было сложно случайно испортить и чтобы он занимал поменьше визуального пространства в АОТ.
		
	 
Цитата: 
	
		
			У аксапты свои ограничения, свои традиции и своя область использования и стоит это учитывать.
		
	 
    Какие такие ограничения и специфика области использования заставляют приделывать плагины.. непонятно как, не используя интерфейсы, проверку типов, возможности наследования, в нарушении best practices, сложившихся традиций и элементарных "правил хорошего тона" X++? Взять тот же Far Manager, передающий и принимающий в качестве интерфейсов таблицы указателей на функции, - там хоть какая-то типизация есть на уровне прототипов функций, описания структур, на основании чего можно еще при сборке плагина сделать элементарные проверки на уровне возможностей компилятора С. А тут, получается, не будет вообще никаких проверок до самого момента вызова, до того, как ядро не тыкнется в экземпляр объекта и, к примеру, не обнаружит отсутствие метода с именем "Tabax" или то, что переданная ссылка соответствует объекту совсем другого типа. Я уже не говорю про IntelliSense и прочие прелести жизни...    Но зато Tabax будет занимать в AOT минимум визуального пространства!   Конечно, это все перевешивает...
		 | 
| 
	
 | 
| 
			
			 | 
		#148 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как типичный случай рассматривается когда табакс стоит без плагинов. Для этой ситуации все оптимизируется. Табакс должен состоять из одной части: собственно форма чтобы можно было легко поставить и снести и сложно снести частично.  
		
		
		
		
		
		
		
	Специфика состоит в том, что в отличие от фара табакс стоит внутри приложения, которое используется и разрабатывается многими людьми. Представь себе что куча людей вставит сносит плагины в твой фар, при этом в папке плагинов нельзя делать подпапки - какая вероятность, что во первых, кто то снесет полплагина; во-вторых, кто-то увидит что в папке стало очень много файлов и прицепится к тебе чтоб тыэто снес? В-общем хочется чтобы табакс был маленькой утилитой, которая легко ставится и сносится. PS Кроме статических языков есть еще динамические языки в которых вообще нет контроля типов при компиляции и многие считают чтоэто хорошо PPS Правда другие считают что это type inferrence для бедных  | 
| 
	
 | 
| 
			
			 | 
		#149 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
![]() А лучшей иллюстрацией для авторов плагинов к Tabax было бы вынесение в плагины части его функций... Цитата: 
	
		
			Табакс должен состоять из одной части: собственно форма чтобы можно было легко поставить и снести и сложно снести частично.
		
	 
Цитата: 
	
		
			Специфика состоит в том, что в отличие от фара табакс стоит внутри приложения, которое используется и разрабатывается многими людьми. Представь себе что куча людей вставит сносит плагины в твой фар, при этом в папке плагинов нельзя делать подпапки - какая вероятность, что во первых, кто то снесет полплагина
		
	 
   Кроме того, что касается плагинов, их составляющие после установки можно заблокировать - и пусть после этого кто-нить другой попробует удалить.Цитата: 
	
		
			во-вторых, кто-то увидит что в папке стало очень много файлов и прицепится к тебе чтоб ты это снес?
		
	 
  Цитата: 
	
		
			В-общем хочется чтобы табакс был маленькой утилитой, которая легко ставится и сносится.
		
	 
Цитата: 
	
		
			Кроме статических языков есть еще динамические языки в которых вообще нет контроля типов при компиляции
		
	 
  
		 | 
| 
	
 | 
| 
			
			 | 
		#150 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#151 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я свои аргументы изложил, агрументы gl00mie мне понятны, но кажутся менее сущетвенными
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#152 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++: class test { } void test1(int _a) {; info(int2str(_a)); } void test2() {; this.test1('Гадость'); }  | 
| 
	
 | 
| 
			
			 | 
		#153 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#154 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно попрбовать сделать чтобы и овцы сыты и и волки целы. см раздел SDK: 
		
		
		
		
		
		
		
	http://erpkb.com/Axapta/Tabax/Plaginy  | 
| 
	
 | 
| 
			
			 | 
		#155 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  Вместо интерфейса Tabax - вызовы предполагаемых методов Object с предполагаемыми параметрамиX++: class TabaxPlugin_CopyWindowHwnd { Object tabax; int action; Hwnd hwnd; Object tabax(Object _value=tabax) { tabax=_value; if (!prmIsDefault(tabax) && tabax) { tabax.subscribe(methodStr(TabaxPlugin_CopyWindowHwnd, BeforeWindowContextMenu), this); tabax.subscribe(methodStr(TabaxPlugin_CopyWindowHwnd, AfterWindowContextMenu), this); } return tabax; } // ... }   
		 | 
| 
	
 | 
| 
			
			 | 
		#156 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#157 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#158 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Первый реальный плагин на основе нового SDK
			 
			
			Плагин - открывает объект в АОТ 
		
		
		
			(функционал взят из http://www.axaptapedia.com/Editor_scripts_OpenInAOT) Для использования в поле для ввода пишем, к примеру X++: go InventTable  | 
| 
	
 | 
| 
			
			 | 
		#159 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может кто-нибудь проверить на медленной машине, тормозит ли  
		
		
		
		
		
		
		
	X++: static void Job25(Args _args) { SysDictClass plug = new SysDictClass(classNum(TabaxPluginBase)); ; info(int2str(plug.extendedBy().elements())); }  | 
| 
	
 | 
| 
			
			 | 
		#160 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Этот - ну, секунды 4 выполнялся, хотя машинка моя не такая уж и медленная.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: belugin (15). | |
| Теги | 
| tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами | 
| 
	
	 | 
	
		
		
  |