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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.07.2013, 14:32   #9  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Я так понимаю нам надо получить типа:
X++:
SELECT WITH SELECT_ORDER, NESTED_LOOP, FORCE_PLACEHOLDERS INDEXISHINT
        SUM(PostedQty), SUM(PostedValue), SUM(PhysicalValue), SUM(Deducted), SUM(Registered),
        SUM(Received), SUM(Picked), SUM(ReservPhysical), SUM(ReservOrdered), SUM(OnOrder),
        SUM(Ordered), SUM(Arrived), SUM(QuotationReceipt), SUM(QuotationIssue), SUM(PhysicalInvent),
        SUM(PostedValueSecCur_RU), SUM(PhysicalValueSecCur_RU), SUM(AvailPhysical), SUM(AvailOrdered)
FROM InventSum
    USING INDEX ClosedItemDimIdx
    WHERE ((Closed = ))
JOIN INDEXISHINT *
FROM InventDim
    GROUP BY InventDim.InventLocationId ASC
    USING INDEX DimIdIdx
    WHERE InventSum.InventDimId = InventDim.inventDimId

JOIN ItemId, SotrOrder
FROM X_table
GROUP BY X_table.SotrOrder, X_table.ItemId ASC
WHERE X_table.ItemId = InventSum.ItemId
При этом в форме ItemId (itemName()) придется брать с X_table...
Добиться подобного запроса можно добавив X_table datasource в форму с inner join к InventSum...
Далее придеться переписать init X_table datasource как-то примерно так:

X++:
void init()
{
    Query q;
    QueryBuildDatasource qbds;
    ;
    super();

    q = this.Query();
    qbds = q.dataSourceTable(tableNum(InventSum));

    qbds.orderMode(OrderMode::GroupBy);
    qbds.fetchMode(QueryFetchMode::One2One);
    qbds.sortClear(); // долой ItemId
    qbds.addSortField(fieldNum(InventSum, dataAreaId)); // наверное можно и без этого

    qbds = q.dataSourceTable(tableNum(InventDim));
    qbds.orderMode(OrderMode::GroupBy);
    qbds.fetchMode(QueryFetchMode::One2One);
    qbds.sortClear(); // долой сортировку/группировку...
    qbds.addSelectionField(fieldNum(InventDim, InventLocationId));
    qbds.addSortField(fieldNum(InventDim, InventLocationId));

    qbds = q.dataSourceTable(tableNum(X_Table));
    qbds.orderMode(OrderMode::GroupBy);
    qbds.fetchMode(QueryFetchMode::One2One);
    qbds.addSelectionField(fieldNum(X_Table, SortOrder));
    qbds.addSelectionField(fieldNum(X_Table, ItemId));
    qbds.addSortField(fieldNum(X_Table, SortOrder));
    qbds.addSortField(fieldNum(X_Table, ItemId));
    
    // sql:
    /*
    qbds = q.dataSourceTable(tableNum(InventSum));
    box::info(qbds.toString());
    */
}
Беда только в том, что группировки могут меняться настройкой отображения аналитик...
Соот-но... по-правильному этот метод необходимо перестраивать с учетом настройки, поэтому
лучше свою форму или...


Фактически совет EVGL
Цитата:
- модифицировать класс, который применяет группировку к источнику данных в форме InventOnhand

Последний раз редактировалось ansoft; 24.07.2013 в 15:32.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Галка "Закрыто" на таблице "В наличии" sev DAX: Функционал 1 11.04.2006 10:19
Отображение финансовых аналитик в "Номенклатура" - "В наличии" Roenick DAX: Функционал 50 27.03.2006 21:58
Подставлять "ранее использованный запрос" при открытии формы Plushy DAX: Функционал 4 16.01.2006 16:23
Номнклатура без запасов в запросе "В наличии" Van DAX: Функционал 2 03.03.2004 14:26
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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