Цитата:
Сообщение от
BOAL
Это вопрос привычки и восприятия, но привычка - дело скорости обработки. Начав перенос кучи кода с АХ4 в АХ2009 понял, что "так жить нельзя"
А еще очень, по-моему, ускоряет процесс, когда не надо шлёпать кнопку "Сравнить" после выбора сравнения из контекстного меню. Я себе такую модификацию к сравнению приделал и теперь впадаю в ступор, если на каком-то приложении выбираю сравнение, а оно само после появления формы не запускается

Правда, в моем случае используется дополнительная настройка, указывающая текущий режим разработки и берущаяся из таблички с дополнительными настройками пользователя, наподобие SysUserInfo. Эта настройка - enum DEV_DevelopmentMode со значениями Usual, UpdateByLayer, Upgrade2NewSP, Upgrade2NewVersion; данная настройка в моем случае также влияет на то, объекты на каком слое будут выбираться по умолчанию для сравнения, как будет идти компиляция (с проверками BP или без), etc. Вот что было допилено в SysCompare для автозапуска сравнения:
X++:
void run()
{
;
startLengthyOperation();
tree.deleteAll();
html.clear();
formRun.detach();
// gl00m -->
if (this.DEV_mustStartCompareNow())
{
this.startCompare();
}
// gl00m <--
}
// возвращает текущий выставленный в настройках режим разработки
protected DEV_DevelopmentMode DEV_getDevelopmentMode()
{
if (!DEV_isDevModeRead)
{
// это новые переменные в классе SysCompare
// TODO брать режим разработки из настроечной таблицы!
DEV_devMode = DEV_DevelopmentMode::Upgrade2NewVersion; // DEV_UserInfoParameters::getDevelopmentMode();
DEV_isDevModeRead = true;
}
return GRD_devMode;
}
// надо ли сразу запускать сравнение объекта(ов)
protected boolean DEV_mustStartCompareNow()
{
SysTreeNodeCompareContext treeNodeContext = SysDictClass::as(context, classnum(SysTreeNodeCompareContext));
TreeNode baseTreeNode1;
TreeNode baseTreeNode2;
boolean ret;
;
if (treeNodeContext)
{
baseTreeNode1 = treeNodeContext.parmTreeNode1();
baseTreeNode2 = treeNodeContext.parmTreeNode2();
if ( baseTreeNode2 // для сравнения выбрано два различных объекта
&& baseTreeNode2 != baseTreeNode1
)
{
if (baseTreeNode2.applObjectLayerMask() == 0) // один из объектов отсутствует в AOT'е (импортируется из XPO)
{
ret = true;
}
}
else // для сравнения выбран только один объект
{
if ( baseTreeNode1.applObjectOldLayerMask() != 0 // выбранный объект присутствует в Old-слоях
&& ( this.DEV_getDevelopmentMode() == DEV_DevelopmentMode::UpdateByLayer
|| this.DEV_getDevelopmentMode() == DEV_DevelopmentMode::Upgrade2NewSP
|| this.DEV_getDevelopmentMode() == DEV_DevelopmentMode::Upgrade2NewVersion
)
)
{
ret = true;
}
}
}
return ret;
}
Прежде чем делать запуск сравнения автоматическим, разумеется, нужно допилить выбор "правильных" слоев в combobox'ах