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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.01.2006, 14:17   #1  
Delfins_imported is offline
Delfins_imported
Участник
 
147 / 10 (1) +
Регистрация: 24.03.2004
Почему при запросе 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 );
		}
	}
Старый 03.01.2006, 14:40   #2  
Delfins_imported is offline
Delfins_imported
Участник
 
147 / 10 (1) +
Регистрация: 24.03.2004
Reshil..

Код:
dictField   = new DictField( tableNum(LedgerTable), qbds.range(iRange).field() );
fieldId	 = fieldname2id( tableNum(LedgerTable), dictField.name() );
Но есть ли другой способ, как достать оригиналний FieldID в таблице ?
Старый 04.01.2006, 10:17   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
<div class='XPPtop'>X++</div><div class='XPP'>
fieldId = fieldExt2Id(qbds.range(iRange).field());</div>
__________________
Axapta v.3.0 sp5 kr2
Старый 04.01.2006, 13:03   #4  
Delfins_imported is offline
Delfins_imported
Участник
 
147 / 10 (1) +
Регистрация: 24.03.2004
Spasibo, vrode vse ok..
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:27.