Магазин Axapta RecId как AnyType - PullRequest
       21

Магазин Axapta RecId как AnyType

2 голосов
/ 07 декабря 2009

Когда я сохраняю RecId в объекте любого типа, номер искажается. В моей реализации я храню RecId в поле значения элемента дерева. Всякий раз, когда я получаю значение данных, число, которое я сохранил, всегда сильно изменяется. Есть предложения?

Вот пример:

void fillTree()
{
    ABC_Menus _ABC_Menus;
    TreeItemIdx parentItemIdx;
    ;
    while select Prompt, RecId from _ABC_Menus
    {
        parentItemIdx = SysFormTreeControl::addTreeItem(formTreeControl, _ABC_Menus.Prompt, FormTreeAdd::Root, _ABC_Menus.RecId, 0, true);
    }
}

public void endLabelEdit(int _idx, str _text, anytype _data)
{
    FormTreeItem formTreeItem = this.getItem(_idx);
    ;
    formTreeItem.text(_text);
    this.setItem(formTreeItem);
    info(_data);     //this number comes out all wrong
    super(_idx, _text, _data);
}

Я храню RecId в поле значения дерева. Однако, если я получу его позже, появится совершенно другое число.
- Запись в таблице: 5637144588
- RecId, отображаемый методом endLabelEdit: 202520592908288

Я также пытался использовать num2str (ABC_Table.RecId, 0, 0, 0) при сохранении RecId в поле. При сохранении таким образом число совпадает, но выдается предупреждение «Назначение / Сравнение теряет точность». Это нормально, или есть лучший способ?

Спасибо

Ответы [ 2 ]

3 голосов
/ 08 декабря 2009

После версии 3 Axapta все RecId являются 64-битными целыми числами. Функция strFmt () может преобразовать recId из int64 в строку для вас, но вы также можете использовать функцию int642str () для явного приведения recId в строку.

RecId recId = 5637144577;
anytype a;
int64 b;
;

a = recId;
b = a;

info(int642str(a));
info(int642str(b));
info(int642str(recId));
2 голосов
/ 08 декабря 2009

Пожалуйста, предоставьте нам полный пример:

RefRecId   recid = 5637144577;
anytype    tmp;
;
info(strfmt('%1', recid));
tmp = recid;
info(strfmt('%1', tmp));
recid = tmp;
info(strfmt('%1', recid));

Результат:

5637144577

5637144577

5637144577

...