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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.11.2011, 11:30   #10  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Спасибо! Проверил код - сортировка закомментирована 4 года назад
X++:
//index hint RecIdTypeIdx
Нет, это у вас хинт закомментирован, он на сортировку не влияет. Я нашел у себя вот такую модификацию:
X++:
...
while (mEnum.moveNext())
                {
                    receipt             = mEnum.currentValue();

                    inventTransKey      = inventCostItemDim::keyAdjust2String(receipt.inventTransId,receipt.inventTransIdReturn,receipt.voucher);
                    financialOpenQty    = mapInventTransIdQty.lookup(inventTransKey);

// dyol 17.08.2009 OK000754 -->
                    //sortReceiptKey      = InventCostItemDim::qtyRecId2String(mapInventTransIdQty.lookup(inventTransKey) / mapInventTransIdTotal.lookup(inventTransKey)*exp10(9), receipt.recId);
                    sortReceiptKey      = InventCostItemDim::qtyRecId2String_OK(mapInventTransIdQty.lookup(inventTransKey) / mapInventTransIdTotal.lookup(inventTransKey)*exp10(9),
                                                                                receipt.recId,
                                                                                receipt.DateFinancial);
// dyol 17.08.2009 OK000754 <--

                    mapSortedReceipt.insert(sortReceiptKey,receipt);
                    mapInventTransIdQty.insert(inventTransKey, financialOpenQty+receipt.financialOpenQty());
                }
...
Добавлен новый метод:
X++:
// dyol 17.08.2009 OK000754  -->
static str qtyRecId2String_OK(Real        _qty,
                              Recid       _recId,
                              TransDate   _transDate)
{
    str qtyStr;
    str recIdStr;
    str key;

    qtyStr = int2str(trunc(_qty));
    recIdStr = int2str(abs(_recId));
    if (_recId < 0)
        key = strrep('0',20-strlen(qtyStr))+qtyStr + date2str(_transDate, 321, 2, 0, 2, 0, 4) + '#-' + strrep('0',15-strlen(recIdStr))+recIdStr;
    else
        key = strrep('0',20-strlen(qtyStr))+qtyStr + date2str(_transDate, 321, 2, 0, 2, 0, 4) + '#0' + strrep('0',15-strlen(recIdStr))+recIdStr;
    return key;
}
// dyol 17.08.2009 OK000754  <--
То есть, дата включается явно в ключ перед RecId, чтобы сортировалось правильно.

Последний раз редактировалось Bega; 28.11.2011 в 11:33.
За это сообщение автора поблагодарили: DreamCreator (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Миф об уникальности RecId? Alenka DAX: Программирование 51 22.08.2013 13:12
Формирование RecId при вставке в таблицу AX из SQL Server Hyper DAX: Программирование 20 28.06.2011 17:30
axforum blogs: Переделываем RecId в таблицах Blog bot DAX Blogs 0 06.05.2011 19:11
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50

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

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

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