|  21.09.2008, 09:58 | #261 | 
| Участник | 
			
			Решил поделиться одной нужной кнопочкой. У себя я её прикрутил к Tabax-у. Если нужно потрэйсить где ошибка, то приходиться открывать репозитарий, искать класс Info и ставить на методе Add точку останова. Хоть и занимает пару секунд, но с какой-нибудь нужной мысли может сбить. А так не надо касаться клавиатуры и времени меньше занимает. X++: void clicked() { container bpCon; container newBpCon; str path = "\\Classes\\Info\\add"; int i; boolean isDelete; ; bpCon = infolog.breakpoint(); newBpCon += conpeek(bpCon,1); for(i=1; i<conlen(bpCon); i+=3) { if(conpeek(bpCon,i+1) != path) { newBpCon += [conpeek(bpCon,i+1)]; newBpCon += [conpeek(bpCon,i+2)]; newBpCon += [conpeek(bpCon,i+3)]; } else isDelete = true; } if(isDelete) { infolog.breakpoint(newBpCon); info("Снята точка останова с Info\Add"); } else { newBpCon += [path]; newBpCon += [11]; newBpCon += [true]; info("Установлена точка останова на Info\Add"); infolog.breakpoint(newBpCon); } } Последний раз редактировалось miklenew; 21.09.2008 в 10:06. | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2), belugin (5), vc (1), Link (1), alex55 (1). | |
|  22.09.2008, 15:34 | #262 | 
| Участник | Цитата: 
		
			приходиться открывать репозитарий, искать класс Info и ставить на методе Add точку останова
		
	 | 
|  | |
| За это сообщение автора поблагодарили: mazzy (10), coolibin (1). | |
|  22.09.2008, 16:26 | #263 | 
| Участник | |
|  | 
|  23.09.2008, 12:10 | #264 | 
| Участник | Цитата: 
		
			Сообщение от miklenew
			   Решил поделиться одной нужной кнопочкой. У себя я её прикрутил к Tabax-у. Если нужно потрэйсить где ошибка, то приходиться открывать репозитарий, искать класс Info и ставить на методе Add точку останова. Хоть и занимает пару секунд, но с какой-нибудь нужной мысли может сбить. А так не надо касаться клавиатуры и времени меньше занимает. Очень удобно... PS на 4.0 не проверял.   | 
|  | 
|  23.09.2008, 16:38 | #265 | 
| Administrator | 
			
			Этот подход имеет один существенный недостаток - он не дает самому использовать классы SysInfoAction для собственных нужд. А пользователям очень нравится переходить в инфологе сразу к записи. В 4.0 поступили по-другому. Там сделали кнопку Правка, которая ведет к месту, откуда была вызвана функция info/error/warning. При этом эта кнопка работает, если не используется механизм SysInfoAction. Т.о. разрекламированный переход к коду - на самом деле используется не везде. Со своей стороны, мне непонятно - почему нельзя было в 4.0 сделать ОТДЕЛЬНУЮ кнопку Стек вызовов и добавить в табличку SysInfolog поле - контейнер со стеком вызвов. Тогда стек вызовов работал бы независимо от механизма SysInfoAction. Правда - в этом случае пришлось бы подправить большее количество методов в классе Info (+форма инфолога+табличка инфолога). Зато фишка была бы качественнее 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  23.09.2008, 16:46 | #266 | 
| Участник | Цитата: 
		
			 он не дает самому использовать классы SysInfoAction
		
	 If the record has an action already, you can see stacktrace by holding Ctrl button while clicking on the action button. | 
|  | 
|  24.09.2008, 16:57 | #267 | 
| Участник | Кнопка Включения/Выключения Breakpoint в классе Info 
			
			Надеюсь miklenew не будешь против что я выложил твой код в виде plugin для tabax. Приложенную папку и изображение необходимо разместить в папке tabax\plugs | 
|  | |
| За это сообщение автора поблагодарили: belugin (5), Link (1). | |
|  24.09.2008, 19:50 | #268 | 
| Участник | |
|  | 
|  09.10.2008, 16:09 | #269 | 
| Британский учённый | 
			
			Как альернативу кнопке в Табаксе, могу предложить кнопку на самой форме с аналогичной функциональностью. Так же добавленна возможность открывать точки останова клавишей BackSpace. Или по двойному щелчку левой кнопки мышки. Модификация для Ax 4, думаю перенести на другую версию труда не составит   
				__________________ Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. | 
|  | 
|  16.10.2008, 00:53 | #270 | 
| Участник | 
			
			Если кто-то использует Tabax + AxPath для AX 2009 - см. приложение. В нем обновленная dll, которая будет работать в новой версии системы. | 
|  | 
|  01.11.2008, 17:29 | #271 | 
| Участник | 
			
			Никак не могу заставить работать AxPath на DAX 4.0. Файл регистрации никаких действий не производит А при попытке перехода по ссылке выдается сообщение: Невозможно отобразить страницу Эта страница сейчас недоступна. Возможно, это вызвано техническими проблемами на веб-узле, или требуется изменение параметров обозревателя. | 
|  | 
|  01.11.2008, 17:35 | #272 | 
| Участник | 
			
			А то, что Иван добавил не работает?
		 | 
|  | 
|  03.11.2008, 08:42 | #273 | 
| Участник | 
			
			В том то и дело, что мне нужна версия dll для 4.0, везде искал, есть только для 3-шки и 2009.
		 | 
|  | 
|  03.11.2008, 09:13 | #274 | 
| Участник | |
|  | 
|  03.11.2008, 11:31 | #275 | 
| Участник | 
			
			Неправильно прописаны пути в реестре к текущей конфигурации. Это, насколько я помню, все, что я поменял. Для 4ки, думаю, они отличаются от 5ки и 3ки. Исходники в архиве, который AndyD изначально выкладывал - я поищу, если не найдешь сам. Но вроде где-то в инете они точно   | 
|  | |
| За это сообщение автора поблагодарили: belugin (4), Stainless (1). | |
|  26.11.2008, 14:58 | #276 | 
| Участник | 
			
			В DAX 4.0 cтолкнулся с ситуацией, когда в Windows для "non-Unicode programs" выбран не русский язык. В этом случае, русский языковой файл от tabax показывает кракозябры. Чтобы работало правильно, я перекодировал файл ru.txt в Unicode и в процедуре "LoadLanguageFile" заменил AsciiIO на TextIO.
		 | 
|  | |
| За это сообщение автора поблагодарили: belugin (5). | |
|  18.12.2008, 16:56 | #277 | 
| MCTS | 
			
			Отключил вызов метода autoHeight из applyChanges, уменьшил высоту панели "руками". С включенным autoHeight были видны 2 избыточных горизонтальных полосы под вкладками Tabax'a.
		 | 
|  | 
|  16.04.2009, 15:21 | #278 | 
| Administrator | Подсчет количества записей 
			
			Решил поделиться небольшой кнопкой подсчета количества записей в активном датасорсе (т.е. в том датасорсе, к которому привязано текущее выбранное поле) Умеет считать количество записей во временной таблице и в таблице, в которой записи отфильтрованы по диналинкам. При подсчете код ориентируется на SysQuery::countTotal X++: void clicked() { FormRun formRun = element.currentFormRun(); FormObjectSet formObjectSet; FormDataSource formDS; Counter cnt; Common copyCursor; Query copyQuery; int i; QueryBuildDataSource qbds; ; if (!formRun) { return; } formObjectSet = formRun.objectSet(); if (!formObjectSet) { return; } formDS = formObjectSet.cursor().dataSource(); if (formRun.objectSet().cursor().isTmp()) { copyCursor = new DictTable(formRun.objectSet().cursor().TableId).makeRecord(); copyCursor.setTmp(); copyCursor.setTmpData(formRun.objectSet().cursor()); select firstonly firstfast recId from copyCursor; if (copyCursor) { cnt = SysQuery::countTotal(formDS.queryRun(), copyCursor); } } else { copyQuery = new Query(formDS.queryRun().query().pack(false)); for (i = 1; i <= formDS.queryRun().query().dataSourceCount(); i++) { qbds = formDS.queryRun().query().dataSourceNo(i); if (qbds.dynalinkCount()) { SysQuery::queryAddDynaCursorAsRangeAndValue(copyQuery, formDS.queryRun().query(), i); } } cnt = SysQuery::countTotal(new QueryRun(copyQuery)); } info(strfmt("%1 записей", cnt)); } Класс SysQuery: X++: private server static container countPrim(container _queryPack, Common _tmpBuffer = null) // Корректный подсчет кол-ва записей во временной таблице { Query countQuery; QueryRun countQueryRun; QueryBuildDataSource qbds; QueryBuildFieldList qbfl; Common common; Integer counter; Integer loops; ; countQueryRun = new QueryRun(_queryPack); countQuery = countQueryRun.query(); qbds = countQuery.dataSourceNo(1); qbds.update(false); qbds.sortClear(); qbfl = qbds.fields(); qbfl.dynamic(false); qbfl.clearFieldList(); if (countQuery.dataSourceCount() == 1) qbds.addSelectionField(fieldnum(Common,RecId),SelectionField::Count); countQueryRun = new QueryRun(countQuery); // Корректный подсчет кол-ва записей во временной таблице --> if (_tmpBuffer) { countQueryRun.setCursor(_tmpBuffer); } // Корректный подсчет кол-ва записей во временной таблице <-- while (countQueryRun.next()) { common = countQueryRun.get(countQuery.dataSourceNo(1).table()); counter += common.RecId; loops++; } return [counter,loops]; } X++: public client server static Integer countTotal(QueryRun _queryRun, Common _tmpBuffer = null)// Корректный подсчет кол-ва записей во временной таблице { container c = SysQuery::countPrim(_queryRun.pack(false), _tmpBuffer); return conpeek(c,1); } 
				__________________ Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 16.04.2009 в 15:24. | 
|  | |
| За это сообщение автора поблагодарили: belugin (5), alex55 (1). | |
|  16.04.2009, 15:28 | #279 | 
| Боец | 
			
			Так если есть объект датасорса, потенциально известно, сколько записей он содержит: Или я не заметил тонкости? X++: for ( localInventTable = inventTable_ds.getFirst() ? inventTable_ds.getFirst() : inventTable_ds.cursor(); localInventTable ; localInventTable = inventTable_ds.getNext()) { info (strFmt("%1", localInventTable.ItemId)); recordCount ++; // <-------- } | 
|  | 
|  16.04.2009, 16:16 | #280 | 
| Участник | 
			
			DSPIC, так будет долго и нарушится позиционирование sukhanchik, лучше такое плагином | 
|  | 
| Теги | 
| tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами | 
|  | 
| 
 |