Почему при запросе field() из Range функция возвращает не тот ID, который в таблице..
Пример:
Код:
dictField = new DictField( tableNum(LedgerTable), qbds.range(iRange).field() );
Я пытаюсь вывести все значения datasource.range(x) в Query, но когда фильтр поставлен из формы запроса отчета, то ID полей таблицы не совподают, если создаются range() в manual-режиме
Код:
qbr = queryRun.query().dataSourceNo(1).addRange(fieldnum(LedgerTable,AccountPlType));
qbr.value( '!'+enum2str(LedgerAccountType::Heading) );
Как решить проблему? DictField как-то понимает всё-таки этот ID из range()
PPS: То что я пытюсь сделать, это сгрупировать все значения всех полей и потом выводить в отчёте..
Код:
qbds = this.query().dataSourceTable(tableNum(LedgerTable));
if ( qbds.rangeCount()!=0 )
{
for ( iRange=1; iRange<=qbds.rangeCount(); iRange++ )
{
oldValue = '';
oldLabel = '';
fieldId = strfmt( '%1_%2', qbds.range(iRange).table(), qbds.range(iRange).field() );
if ( mapRanges.exists(fieldId) )
{
[oldLabel,oldValue] = mapRanges.lookup(fieldId);
mapRanges.remove(fieldId);
}
if (!oldLabel)
{
dictField = new DictField( tableNum(LedgerTable), qbds.range(iRange).field() );
oldLabel = dictField.label();
}
if ( oldValue ) oldValue += ', ';
oldValue += qbds.range(irange).value();
rangeData = [oldLabel,oldValue];
mapRanges.insert( fieldId, rangeData );
}
}