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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.05.2022, 12:10   #1  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
двойная идентификация нового поля в таблице по fieldid (2 разных fieldid)
Привет.
Никак не могу понять что у определенного поля у таблицы может быть два fieldid.
И под обоими оно находится через:
X++:
new DictField(_tableId, _fieldId).dictField.name()
fieldId2name(_tableId, _fieldId)
Важно: данное поле не стоковое, а новое - созданное.
Вот код:
X++:
int id;
str name;

str _fieldName(tableId _tableId, fieldId _fieldId)
{
	DictField dictField = new DictField(_tableId, _fieldId);
	str     ret;
	;
	if (dictField)
		ret = dictField.name();
	return ret;
}
;

id = fieldNum(smmActivities, NewField);
info(strFmt("field name (%1) = %2", id, fieldId2name(tableNum(smmActivities), id)));
info(strFmt("field name (%1) = %2", 115539, fieldId2name(tableNum(smmActivities), 115539)));
info(strFmt("field name (%1) = %2", 115539, _fieldName(tableNum(smmActivities), 115539)));

Его выполнение дает результат:
Цитата:
field name (50003) = NewField
field name (115539) = NewField
field name (115539) = NewField
Т.е. получается у таблицы smmActivities есть новое поле NewField
которое одинакого находится под id 50003 и 115539.

Посмотрел в таблице SqlDictinary в SQL под данным именем существует только запись с id 50003.
Вопрос, что за виртуальный номер 115539 ?
Кто нибуль сталкивался с таким?

Последний раз редактировалось oleggy; 20.05.2022 в 12:15.
Старый 20.05.2022, 12:17   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от oleggy Посмотреть сообщение
Вопрос, что за виртуальный номер 115539 ?
см.
global::fieldExt2Id
global::fieldExt2Idx

а также
global::fieldId2Ext

полный код поля - это long
где младший int - это номер поля, который виден в свойствах АОТ
а старший int - это индекс, если тип поля является массивом

если в старшем int находится 0, то аксапта все равно работает с первым элементом в массиве.

т.е. это не баг, а фича. согласен, что достаточно неприятная, если нужно работать с уникальными идентификаторами.

всегда работайте с массивами отдельно.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: oleggy (2).
Старый 20.05.2022, 14:15   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Это иногда можно использовать в свою пользу
как на одно поле наложить два условия со значениями типа Range по И
За это сообщение автора поблагодарили: mazzy (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пропавшие поля в таблице Андре DAX: Программирование 10 03.03.2016 10:32
После перекрытия JumpRef поля на DataSource в контекстном меню так и не появился переход к основной таблице. Кирилл DAX: Программирование 7 01.02.2007 11:42
Два одинаковых поля два разных события miklenew DAX: Программирование 3 29.11.2006 13:50
Присваивание значения поля по FieldId Oleg Rynda DAX: Программирование 1 16.08.2004 12:27
Проблема при добавлении в таблицу нового поля Maxim Gorbunov DAX: База знаний и проекты 2 09.08.2002 15:30

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

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

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