AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2010, 23:22   #21  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Logger Посмотреть сообщение
Совсем не обязательно. Код на sysSetupFormRun.init() можно сделать совсем хитрым, чтобы реагировал только на определенные формы и нужные гриды доставал из дизайна сразу по имени, не перебирая всех контролов. Тогда форма не переезжает на usr-слой.
это да.
но стопудово после нас программисты заказичка будут крыть нас матерными словами за такой подход... у них есть формы-монстры, которые они сами прогают... или не будут крыть?..

в общем, про sysSetupFormRun я помню.
на всякий случай: formdigger программистами заказчика установлен, освоен и используется (спасибо автору, DSPIC)
__________________
полезное на axForum, github, vk, coub.
Старый 13.09.2010, 23:27   #22  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от db Посмотреть сообщение
этот код не влияет на формы, они никуда не переезжают и никак (с точки зрения AOT) не изменяются
SysSetupFormRun это класс. Внесенные в него несколько строчек отрубают обсуждаемую фичу нафиг по всей системе
Да. Но я очень боюсь потери производительности при открытии форм при обработке контролов за счет обработки в SysSetupFormRun (особенно на маломощных компах. а такие есть). пусть уж лучше комп время тратит на определение ширины колонок, нежели на перебор контролов, чтобы отключить автоопределение ширины колонок.

кроме того, боюсь побочных эффектов из-за работы SysSetupFormRun (хотя formdigger стоит и не жужжит).

поэтому я предполагал, что буду изменять метод init и свойство autodeclaration во всех формах, которые потенциально могут быть медленными из-за большого количества записей. Так придется менять меньше форм, чем "все формы". но все равно очень много
__________________
полезное на axForum, github, vk, coub.
Старый 13.09.2010, 23:35   #23  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
бояться ваше право. но никто ничего плохого не заметит. в худшем случае прирост производительности от отрубания фичи будет сожран этим циклом
Старый 13.09.2010, 23:41   #24  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
вот-вот.
об этом и речь - шило на мыло.

поэтому и спросил в надежде на возможные варианты.


будем обсуждать с заказчиком. может быть, действительно стоит изменить sysSetupFormRun, если нет глобального параметра для ядра. причем самые монстроидальные формы перечислить явно в switch, чтобы аксапта не тратила время на перебор контролов при открытии.
__________________
полезное на axForum, github, vk, coub.
Старый 13.09.2010, 23:45   #25  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
вот-вот.
об этом и речь - шило на мыло.

поэтому и спросил в надежде на возможные варианты.


будем обсуждать с заказчиком. может быть, действительно стоит изменить sysSetupFormRun, если нет глобального параметра для ядра. причем самые монстроидальные формы перечислить явно в switch, чтобы аксапта не тратила время на перебор контролов при открытии.
шило на мыло будет в громадных формах без записей. в остальных случаях мыло сгладит влияние шила на некоторые нежные участки тела
За это сообщение автора поблагодарили: mazzy (2), sukhanchik (6).
Старый 14.09.2010, 01:45   #26  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от db Посмотреть сообщение
ребята, травы отсыпьте
этот код не влияет на формы, они никуда не переезжают и никак (с точки зрения AOT) не изменяются
SysSetupFormRun это класс. Внесенные в него несколько строчек отрубают обсуждаемую фичу нафиг по всей системе
Внимательнее читайте сообщения !

Я про это и писал. Вместо добавления кода в каждую форму - добавить только код в SysSetupFormRun, который по имени формы будет доставать нужные контролы из дизайна по имени и делать с ними что потребуется.
Старый 14.09.2010, 11:35   #27  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от db Посмотреть сообщение
Ну в общем тоже сделал.
X++:
private void autoSizeColumns(boolean _autoSizeColumns)
{
    void traverse(Object _parent)
    {
        // ...
    }
    traverse(this.design());
}
Такие велосипеды уже давно изобретены - см. Итератор с поддержкой методов обратного вызова для обработки контролов на форме
Цитата:
Сообщение от mazzy Посмотреть сообщение
Но я очень боюсь потери производительности при открытии форм при обработке контролов за счет обработки в SysSetupFormRun (особенно на маломощных компах. а такие есть).
Нет ее - этой потери производительности Если есть сомнения, можно код перебора контролов обрамить следующим образом и посмотреть, сколько времени потратится:
X++:
UtcDateTime     dateTimeStart;
;
dateTimeStart = DateTimeUtil::utcNow();
// лопатим контролы...
info( strfmt( @"%1 мс", DateTimeUtil::getDifference( DateTimeUtil::utcNow(), dateTimeStart ) * 10 ) );
Цитата:
Сообщение от mazzy Посмотреть сообщение
стопудово после нас программисты заказичка будут крыть нас матерными словами за такой подход... у них есть формы-монстры, которые они сами прогают... или не будут крыть?..
Не будут, если дать им возможность легко "встраивать" свои формы-монстры в механизм управления автоподбором ширины колонок в гриде.
Цитата:
Сообщение от mazzy Посмотреть сообщение
поэтому я предполагал, что буду изменять метод init и свойство autodeclaration во всех формах, которые потенциально могут быть медленными из-за большого количества записей. Так придется менять меньше форм, чем "все формы". но все равно очень много
Тю!..
Цитата:
Сообщение от mazzy Посмотреть сообщение
может быть, действительно стоит изменить sysSetupFormRun, если нет глобального параметра для ядра. причем самые монстроидальные формы перечислить явно в switch, чтобы аксапта не тратила время на перебор контролов при открытии.
Какой еще switch?.. В общем, есть такой способ решения этой задачи (во многом схожий с тем, что уже обсуждалось):
  • в SysSetupFormRun делаются обработчики, вызываемые до и после инициализации формы (вызова super() в init()) - это позволяет не замусоривать своим кодом перекрытый init() и легко переносить потом модификации;
  • в SysSetupFormRun заводится метод, который возвращает множество названий форм, где надо перебить указанное свойство гридов. Во множество прописываются наиболее "тяжелые" формы с фиговой тучей полей в гридах (тормозит ведь именно на количестве полей, а не числе записей, ну еще на display-методах), соотв. добавить туда новую форму можно одной строкой кода. Для оптимизации множество кэшируется в GlobalCache;
  • В обработчике, вызываемом в SysSetupFormRun после инициализации формы, дергается метод, перебивающий свойствов гридов, если текущая форма - одна из множества.
Таким образом, получается минимум легко переносимых и настраиваемых кастомизаций.
\Classes\SysSetupFormRun\DEV_getSetOfFormNames2TweakGrid
X++:
// возвращает множество названий форм, на Grid'ах которых нужно отключить austoSizeColumns
protected Set DEV_getSetOfFormNames2TweakGrid()
{
    Set ret = infolog.globalCache().get( classstr(SysSetupFormRun), funcname(), null );
    ;
    if (!(  ret
        &&  ret.typeId() == Types::String
       ))
    {
        ret = new Set( Types::String );
        // собственно здесь нужно перечислить названия форм, которые нужно автоматом "допиливать" при старте
        ret.add( formstr(OfficialsTable_RU) );
        ret.add( formstr(PurchTable) );
        ret.add( formstr(SalesTable) );

        // запоминаем множество в globalCache, чтоб не создавать каждый раз
        infolog.globalCache().set( classstr(SysSetupFormRun), funcname(), ret );
    }
    return ret;
}
\Classes\SysSetupFormRun\DEV_initDesignPost - тут используется итератор из этой темы
X++:
// дополнительное допиливание дизайна формы после инициализации
protected void DEV_initDesignPost()
{
//  UtcDateTime     dateTimeStart;
    identifiername  formName = this.name();
    ;
    if (this.DEV_getSetOfFormNames2TweakGrid().in( formName ))
    {
//      dateTimeStart = DateTimeUtil::utcNow();
        DEV_iterateThroughFormControls( this.design(), null, staticmethodstr(DEV_FormHelpers, setGridAutoSizeColumnsOff), DEV_FormHelpers::addGridCtrlId2Set() );
//      info( strfmt( @"%1 мс", DateTimeUtil::getDifference( DateTimeUtil::utcNow(), dateTimeStart ) * 10 ) );
    }
}
\Classes\SysSetupFormRun\DEV_initDesignPre
X++:
// дополнительное допиливание дизайна формы до инициализации
protected void DEV_initDesignPre()
{
    // ACHTUNG! Эта модификация к проблеме grid'ов никакого отношения не имеет!
    // опционально вертаем окна взад в рамки основного окна клиента (точнее, текущего workspace'а)
    if (    this.form().design().windowType()                       == FormWindowType::Standard
        &&  DEV_UserInfoParameters::find().DefaultFormWindowType    == DEV_DefaultFormWindowType::Workspace
       )
    {
        this.form().design().windowType( FormWindowType::Workspace );
    }
}
\Classes\SysSetupFormRun\init
X++:
public void init()
{
    // <GEEU>
    this.raiseEvent_W(methodstr(FormRunListener_W, beforeInit));
    // </GEEU>
    this.DEV_initDesignPre();                   // наши модификации
    super();
    SysSecurityFormSetup::loadSecurity(this);
    this.dimensionFieldCtrls();
    this.inventStorageDimFieldCtrls();

    if (this.isWorkflowEnabled())
    {
        workflowControls = SysWorkflowFormControls::construct(this);
        workflowControls.initControls();
    }
    this.DEV_initDesignPost();                  // наши модификации
    // <GEEU>
    this.raiseEvent_W(methodstr(FormRunListener_W, afterInit));
    // </GEEU>
}
За это сообщение автора поблагодарили: mazzy (2).
Старый 14.09.2010, 12:41   #28  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Внимательнее читайте сообщения !
ок, постараюсь но согласитесь написано слегка неоднознано

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Такие велосипеды уже давно изобретены - см.
ребята, не усложняйте без причин. не нужен крутой перфоратор и модные анкеры чтобы привесить картонку к фанерной стене на даче. достаточно обычного гвоздя и дедушкиного молотка
За это сообщение автора поблагодарили: mazzy (2).
Старый 14.09.2010, 13:50   #29  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от db Посмотреть сообщение
ребята, не усложняйте без причин. не нужен крутой перфоратор и модные анкеры чтобы привесить картонку к фанерной стене на даче
Оно бы хорошо, если б речь шла об однократном привешивании картонки к фанерной стене, однако ж, если верить перекрестным ссылкам, я лично этот итератор уже использовал в 16-и различных местах приложения.

Если бы в Х++ была встроенная поддержка делегатов, не требующая разного рода костылей и игр с механизмами отражения, думаю, многи задачи решались бы с куда меньшими накладными расходами на кодирование и/или объемом copy-paste'а.
Старый 15.09.2010, 08:34   #30  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Оно бы хорошо, если б речь шла об однократном привешивании картонки к фанерной стене, однако ж, если верить перекрестным ссылкам, я лично этот итератор уже использовал в 16-и различных местах приложения.
задал вопрос в исходной ветке: Итератор с поддержкой методов обратного вызова для обработки контролов на форме
__________________
полезное на axForum, github, vk, coub.
Старый 22.09.2010, 19:09   #31  
Geo is offline
Geo
Участник
Аватар для Geo
 
258 / 47 (2) +++
Регистрация: 04.04.2008
До сих пор не замечал описанных в теме проблем. С какого примерно числа записей они должны начать проявляться?
Старый 22.09.2010, 19:21   #32  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
У меня лично сложилось мнение, что дело не столько в количестве записей в таблице, сколько в количестве полей, отображаемых в Grid'е, и, если в нем есть поля на базе display/edit-методов, в скорости обсчета этих методов (которая, впрочем, может коррелировать с количеством записей в той или иной таблице ).
Старый 22.09.2010, 19:22   #33  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Например, в демо-данных на тестовом сервере (понятно, что не очень мощный) заметно торможение "из коробки". Особенно критично на таблицах с дисплей-полями. Например, в исходной теме из блога говорится о форме проводок по клиенту.
__________________
Ivanhoe as is..
Старый 23.09.2010, 07:13   #34  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
не только дисплей-поля.
попробуйте обычный браузер таблиц. откройте его в стандартном варианте и с автоопределением ширины столбца.

Цитата:
Сообщение от Geo Посмотреть сообщение
До сих пор не замечал описанных в теме проблем. С какого примерно числа записей они должны начать проявляться?
как только записи не помещаются в буфер, так сразу начинается.
визуально - как только начинаются побочные эффекты с вертикальным скролбаром, так сразу отключение покажет эффект.

Конечно же, автоопределение не зависит от скролбара. По-моему и проблемы со скорлбаром, и проблемы с автоопределением вызваны одной и той же причиной.
__________________
полезное на axForum, github, vk, coub.
Старый 23.09.2010, 12:36   #35  
Geo is offline
Geo
Участник
Аватар для Geo
 
258 / 47 (2) +++
Регистрация: 04.04.2008
Чего-то я ничего не вижу
Это свойство грида - autoSizeColumns? Не могу такого найти...
Старый 23.09.2010, 12:42   #36  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Geo Посмотреть сообщение
Чего-то я ничего не вижу
Это свойство грида - autoSizeColumns? Не могу такого найти...
это runtime-свойство.
__________________
полезное на axForum, github, vk, coub.
Старый 23.09.2010, 18:12   #37  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Класс для проверки влияния autoSizeColumns() на время запуска форм
Цитата:
Сообщение от mazzy Посмотреть сообщение
не только дисплей-поля. попробуйте обычный браузер таблиц. откройте его в стандартном варианте и с автоопределением ширины столбца.
Не понял эту фразу... В стандартном варианте на всех гридах, включая те, что на форме обозревателя, автоопределение ширины столбца включено. Для обозревателя, на ряду с другими формами, его можно отключить. Я сперва засомневался и попытался, было, приделать в SysSetupFormRun вывод значения свойства autoSizeColumns() для всех открываемых форм (опять же, с помощью итератора ), но тут обнаружил, что соотв. метод на FormGridControl не возвращает текущее значение свойства, а лишь позволяет устанавливать его. К слову, если пользоваться предложенным мной вариантом, то после изменения перечня форм в методе SysSetupFormRun надо перезапускать клиента либо очищать закэшированное в GlobalCache множество названий форм, потому что произведенные изменения в коде не возымеют действия, пока есть закэшированное множество.
Возвращаясь к обозревателю, можно попробовать на двух таблицах: CustTrans и CustTransIdRef. Записей там должно быть одинаковое количество, при этом в CustTrans, в моем случае, более 100 полей, включая системные, в то время как в CustTransIdRef их всего 5. Впрочем, тут сложно отделить замедление, связанное с автоопределением ширины столбцов, от общего замедления, связанного с обработкой большего числа полей обозревателем. Во всяком случае, я лично отчетливо вижу разницу во времени открытия обозревателя для таблиц CustTrans и CustTransIdRef, однако, отключение автоопределения ширины столбцов для grid'ов формы обозревателя таблиц в моем случае не дает сколь-нибудь заметного ускорения.
Цитата:
Сообщение от mazzy Посмотреть сообщение
как только записи не помещаются в буфер, так сразу начинается. визуально - как только начинаются побочные эффекты с вертикальным скролбаром, так сразу отключение покажет эффект.
По-моему Grid в любом случае при открытии формы считывает в память клиента одинаковое количество записей, разве нет?..

...В общем, для проверки влияния автоопределения ширины колонок на время открытия различных форм был написан небольшой класс. Ему при запуске (в коде main() - ибо класс написан на коленке) передается название формы либо идентификатор таблицы, которую надо открыть обозревателем. После этого класс эту форму в цикле открывает, ждет, пока клиент перейдет в состояние простоя, тут же форму закрывает и засекает, сколько времени (тиков) ушло с момента запуска. При этом основной цикл из ндцати открытий формы прогоняется дважды: сперва автоопределение ширины колонок отключается (в предположении, что используется приводившаяся мной доработка для SysSetupFormRun), а затем включается. У меня получились такие тестовые результаты:
Код:
Form 'SalesTable', autoSizeColumns( false )
5159 ticks average per 10 times
Form 'SalesTable', autoSizeColumns( true )
6795 ticks average per 10 times
Form 'SysTableBrowser' for LedgerJournalTrans, autoSizeColumns( false )
2479 ticks average per 10 times
Form 'SysTableBrowser' for LedgerJournalTrans, autoSizeColumns( true )
2417 ticks average per 10 times
Для обозревателя таблицы результат несколько неожиданный: автоопределение ширины колонок хоть чуть-чуть, но ускоряет, а не замедляет его открытие. Я гонял тест много раз - результат для обозревателя всегда повторялся. NB! Некоторые формы требуют указания параметров для успешного запуска, и их надо запускать через специальный пункт меню. Класс на это не заточен, кому надо - допилите.
Вложения
Тип файла: zip DEV_FormRunBenchmark.zip (3.5 Кб, 87 просмотров)
За это сообщение автора поблагодарили: mazzy (5).
Старый 23.09.2010, 19:38   #38  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
По-моему Grid в любом случае при открытии формы считывает в память клиента одинаковое количество записей, разве нет?..
мне показалось (да, я не знаю. всего лишь показалось) что при автоопределении ширины колонок аксапта считывает все поля.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
У меня получились такие тестовые результаты:
отличный подход! респект.
я всего-лишь на глаз мерял. при выключенной автоширине значительно быстрее.
но завтра замеряю.

эксперимент - критерий истины.
__________________
полезное на axForum, github, vk, coub.
Старый 13.02.2011, 18:23   #39  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
! "Не все йогурты одинаково полезны" :(
Цитата:
Сообщение от db Посмотреть сообщение
Ну в общем тоже сделал.
Во вложении измененный SysSetupFormRun из RU5
....
Малость (не более 0,1 сек) притормаживает открытие формы в зависимости от количества элементов на ней.
Если использовать данную модификацию, действительно немного быстрее открывается форма. Но попробуйте теперь создать запись например в Управление запасами\Журналы\Проводки по номенклатуре\Проводка, что при этом происходит со столбцами грида и их заголовками? Все успешно разъезжается. Не красиво как-то получается. Такое впечатление что для создаваемой строки отрабатывает свойство autoSizeColumns(true).
Если отредактировать ширину какого либо столбца руками, чтобы система запомнила настройки формы, то такого глюка не возникает.

Последний раз редактировалось Daiver; 13.02.2011 в 18:31.
Старый 13.02.2011, 18:56   #40  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Странно.
По идее эта опция на грид целиком должна влиять.
Теги
ax2009, grid, syssetupformrun, грид, законченный пример, полезное, производительность, ширина

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
findValue = false valentino DAX: Программирование 5 19.11.2009 11:36
Отчеты семейства "Оборотно-сальдовая ведомость", "Акт сверки" и прочие (RCash*) с ListView перед отчетом - настройка ширины столбцов Maximin DAX: Функционал 5 17.04.2009 15:10
Сергей Герасимов: Как отключить функциональность суммовых разниц Blog bot DAX Blogs 16 21.11.2008 17:12
Формат столбца при вставке через буфер breakpoint DAX: Программирование 11 23.05.2008 10:35
closeDocument(boolean _save = false, int _workBook = 1) Daido DAX: Программирование 1 03.11.2007 09:58

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:32.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.