Показать сообщение отдельно
Старый 26.02.2013, 09:40   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1789 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Apollon33 Посмотреть сообщение
Пытался сделать по аналогии с выборкой данных по аналитике
Вот в этом месте
X++:
    if (dimensionCriteria5 && rDeferralsGroupId)
    {
        qbr = qbds.addRange(fieldId2Ext(fieldnum(RDeferralsBook, Dimension), 5));
        qbr.value(dimensionCriteria5);
        qbr = qbds.addRange(fieldNum(RDeferralsBook, DeferralsGroupId));
        qbr.value(rDeferralsGroupId);
    }
у вас написано, что ограничение по группе должно применяться только если одновременно задано и ограничение по 5-ой аналитике. Это специально так сделано?

Попробуйте разделить эти два условия вот так :
X++:
    if (dimensionCriteria5)
    {
        qbr = qbds.addRange(fieldId2Ext(fieldnum(RDeferralsBook, Dimension), 5));
        qbr.value(dimensionCriteria5);
    }
    if (rDeferralsGroupId)
    {
        qbr = qbds.addRange(fieldNum(RDeferralsBook, DeferralsGroupId));
        qbr.value(rDeferralsGroupId);
    }

На самом деле если не используете фунцию queryValue() для экранирования спецсимволов (позволяете пользователям искать по маске, а не саму маску), то можно предварительно не проверять наличие значения в переменной а просто всегда накладывать фильтр.
X++:
        qbr = qbds.addRange(fieldId2Ext(fieldnum(RDeferralsBook, Dimension), 5));
        qbr.value(dimensionCriteria5);
   
        qbr = qbds.addRange(fieldNum(RDeferralsBook, DeferralsGroupId));
        qbr.value(rDeferralsGroupId);
Пустая строка в фильтре будет трактоваться системой как отсутствие фильтра.

Последний раз редактировалось S.Kuskov; 26.02.2013 в 09:48.