13.09.2010, 00:40 | #1 |
Участник
|
Как глобально отключить автоопределение ширины столбца = autoSizeColumns(false) ?
Собственно сабж.
Есть ли возможность глобально отключить эту новую фичу? Что-то ужасает меня то количество форм, в которых надо отключать эту фигню... См. также emeadaxsupport: Forms with a high number of records take a significant time to show |
|
13.09.2010, 09:43 | #2 |
Модератор
|
Если количество форм превышает 50, то легче смириться, оставить как есть, считать "новой фичей" и начинать привыкать.
Георгий |
|
13.09.2010, 09:46 | #3 |
Участник
|
Можно написать код в sysSetupFormRun, в котором перебирать все контролы и если попался грид то отключать. У нас сделали - вроде работает.
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
13.09.2010, 10:09 | #4 |
Участник
|
Цитата:
Только реально тормозит на большом количестве записей. Из-за локализации и модификаций пришлось увеличить буфер. А с увеличенным буфером эта новая фича непотребно долго работает. Я конечно вырубил вручную на SysTableBrowser, складских и финансовых проводках, на InventSettlement. Смотрю в список таблиц, где еще предстоит, и мне становится плохо от этого количества бездумных модификаций... Цитата:
На тех же заказах? Я конечно понимаю, что можно некоторые формы вынести в отдельный switch... Но как-то не хочется. |
|
13.09.2010, 10:19 | #5 |
Участник
|
Не замерял тормоза. Так как активно не работаю пока в 2009-й.
В 3-ке подобные переборы всех контролов не тормозили точно. |
|
13.09.2010, 11:00 | #6 |
Moderator
|
Может попробовать переопределить метод init() в sysSetupFormRun ? Можно там super() вызвать, а потом написать рекурсивный перебор контролов, который всем гридам поставит autoSizeColumns(false). Код рекурсивного перебора можно позаимствовать в sysSetupForm.formControlTreeBuild().
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
13.09.2010, 17:05 | #7 |
Участник
|
|
|
13.09.2010, 18:08 | #8 |
Участник
|
|
|
13.09.2010, 18:25 | #9 |
Moderator
|
Обрати внимание: Первые два сообщения - про размер буфера курсора (грубо говоря), который устанавливается в конфигураторе сервера. Последнее сообщение - про совсем другой буфер (максимальный объем переменных сессии).Начиная с 4ки можно запретить одной сессии съедать под переменные (как я понимаю - вполне себе пользовательские переменные типа больших mapов или строк) более чем некоторый объем памяти. По моему опыту - при превышении этого объема в 2009ой версии сервер регулярно тупо падает по exception (хотя по логике вещей должен был бы прибивать твою сессию).
На мой взгляд - к твоей проблеме имеет отношение только буфер курсора. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Logger (2). |
13.09.2010, 19:21 | #10 |
Участник
|
|
|
13.09.2010, 19:27 | #11 |
Moderator
|
В трешке этой настройки просто не было. А 4ку по моему никто в России (да и в мире) никто толком неповнедрял, так что особой статистики по падениям не набралось. А в 2009ой когда мы поддержку запросили - поддержка результатам анализа крэшдампа не удивилась нисколько, так что похоже что это типичная ситуация....
|
|
13.09.2010, 21:42 | #12 |
Роман Долгополов (RDOL)
|
Цитата:
Во вложении измененный SysSetupFormRun из RU5 если лень импортировать, то X++: private void autoSizeColumns(boolean _autoSizeColumns) { void traverse(Object _parent) { int cnt = _parent.controlCount(); Object child; int i; ; if (_parent.handle() == classnum(FormGridControl)) { _parent.autoSizeColumns(_autoSizeColumns); } else { for (i = 1; i <= cnt; i++) { child = _parent.controlNum(i); if (child.isContainer()) { traverse(child); } } } } traverse(this.design()); } X++: public void init() { int a; // <GEEU> this.raiseEvent_W(methodstr(FormRunListener_W, beforeInit)); // </GEEU> super(); SysSecurityFormSetup::loadSecurity(this); this.dimensionFieldCtrls(); this.inventStorageDimFieldCtrls(); this.autoSizeColumns(false); if (this.isWorkflowEnabled()) { workflowControls = SysWorkflowFormControls::construct(this); workflowControls.initControls(); } // <GEEU> this.raiseEvent_W(methodstr(FormRunListener_W, afterInit)); // </GEEU> } |
|
|
За это сообщение автора поблагодарили: mazzy (6), BOAL (5), Yegor (2), sukhanchik (8), Logger (5), Daiver (1), Link (1), ivas (2), Geo (2). |
13.09.2010, 22:01 | #13 |
Участник
|
|
|
13.09.2010, 22:53 | #14 |
Боец
|
А почему не отключить это св-во во всех формах, пробежавшись по ним джобом?
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
13.09.2010, 22:57 | #15 |
Роман Долгополов (RDOL)
|
|
|
13.09.2010, 23:05 | #16 |
Участник
|
Цитата:
но. разве autoSizeColumns - это не runtime свойство? (я еще не пробовал). просто в AOT в списке свойств грида этого свойства нет. |
|
13.09.2010, 23:08 | #17 |
Участник
|
Цитата:
изменения в свойствах гораздо легче в дальнейшем апгрейдить, нежели изменения в методах |
|
13.09.2010, 23:13 | #18 |
Участник
|
Совсем не обязательно. Код на sysSetupFormRun.init() можно сделать совсем хитрым, чтобы реагировал только на определенные формы и нужные гриды доставал из дизайна сразу по имени, не перебирая всех контролов. Тогда форма не переезжает на usr-слой.
|
|
13.09.2010, 23:18 | #19 |
Роман Долгополов (RDOL)
|
Цитата:
Цитата:
этот код не влияет на формы, они никуда не переезжают и никак (с точки зрения AOT) не изменяются SysSetupFormRun это класс. Внесенные в него несколько строчек отрубают обсуждаемую фичу нафиг по всей системе |
|
13.09.2010, 23:20 | #20 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от mazzy
э-э-э... неожиданный подход. количество модификаций поражает. но они простые и легко определяются сравнением. жаль, что сам не подумал в этом направлении.
но. разве autoSizeColumns - это не runtime свойство? (я еще не пробовал). просто в AOT в списке свойств грида этого свойства нет. |
|
Теги |
ax2009, grid, syssetupformrun, грид, законченный пример, полезное, производительность, ширина |
|
|