Привет всем.
Решили мы наконец перейти на терминальных серверах с 2003-й винды (32 бит) на 2012 R2
Все поставили - работает но бывают очень странные плавающие глюки. Может быть кто-нибудь подскажет в чем может быть дело.
Описание :
Форма LedgerJournalTable
Управляющий класс LedgerJournalformTable
При инициализации формы отрабатывает метод
X++:
SysQuery::GRD_setFieldRange( qbds, fieldnum(LedgerJournalTable, journalType), queryValue(ledgerJournalType), RangeStatus::Locked );
где GRD_setFieldRange это
X++:
// очищает все Range'и по указанному полю и устанавливает новый Range с указанным статусом
static QueryBuildRange GRD_setFieldRange(QueryBuildDataSource _qbds,
FieldId _fieldId,
Range _rangeValue,
RangeStatus _rangeStatus = RangeStatus::Open)
{
QueryBuildRange qbr;
;
if (_qbds)
{
while (_qbds.findRange(_fieldId))
{
_qbds.clearRange(_fieldId);
}
qbr = _qbds.addRange(_fieldId);
if (qbr)
{
qbr.value( _rangeValue);
qbr.status(_rangeStatus);
}
}
return qbr;
}
Выяснилось что после отработки этого метода "портится" значение переменной criteriaJournalType определенной тут
\Classes\JournalFormTable\classDeclaration
и инициализированной так :
X++:
if (journalStatic.tableFieldIdJournalType())
criteriaJournalType = journalTable_ds.query().dataSourceNo(1).addRange(journalStatic.tableFieldIdJournalType());
(это стандартный код)
"Порча" в том что Аксапта начинает считать ссылку criteriaJournalType нулевой, но в какой то момент (вызов super() на дочерних датасорсах прилинкованных по delayed) эта ссылка вообще смотрит на какой то узел в treenode в AOT а вовсе не на QueryBuildRange ! Из-за чего при попытке работать с ней лезут ошибки. В частности при попытке установить фильтр ядро ругается что нет метода value
Из-за чего это может быть ? Как лечить ?
Ядро от RU7 (билд 1500.4570)
Проявляется на win2012 R2
Не проявляется на win2003 и на win2008 R2
Настройка совместимости с winXp, win7, etc в ярлыке запускающем клиента аксапты - не помогает.