|  | v7: Условие на значение функций | ☑ | 
    
        | 0
    
        Andrey1957   20.06.12✎ 10:51 | 
        Уважаемые коллеги! 
 Стоит задача отобрать из регистра, в котором записаны приход и расход по выполненным работам, акты готовой продукции, по которым имеется долг заказчика.
 В запросе пишу:
 
 |Период с НачПериода по КонПериода;
 |АГП = Регистр.Оплата.Акт;
 |Статус = Регистр.Оплата.Статус;
 |Заказчик = Регистр.Оплата.Контрагент;
 |СуммаСНДС = Регистр.Оплата.СуммаСНДС;
 |Функция ДолгЗак = КонОст(СуммаСНДС) когда(сзДолгПодпАктов.Принадлежит(Статус)=1);
 |Группировка Заказчик;
 |Группировка АГП;
 |Условие(ДолгЗак >0 );
 
 При выполнении получаю сообщение "Ошибка в выражении 'ДолгЗак'".
 Вот и не пойму: можно ли накладывать условия на значения функций в запросе? Если можно, то как? Что у меня сделано неправильно?
 Подскажите, плз. Заранее благодарен.
 |  | 
    
        | 1
    
        Voronve   20.06.12✎ 10:56 | 
        |Функция ДолгЗак = КонОст(СуммаСНДС) когда (Статус в сзДолгПодпАктов);
 
 оно ?
 |  | 
    
        | 2
    
        miki   20.06.12✎ 10:56 | 
        (0)Для группировки какого уровня должно выполняться условие?     |  | 
    
        | 3
    
        Ёпрст   гуру 20.06.12✎ 10:58 | 
        вот это бред
 
 Условие(ДолгЗак >0 );
 |  | 
    
        | 4
    
        Ёпрст   гуру 20.06.12✎ 10:59 | 
        + накладывать условие на результат функции ( а тем более, КонОст) приведёт к фантастическим результатам, ибо это не having в тексте запроса, а where при вычислении функции...     |  | 
    
        | 5
    
        Ёпрст   гуру 20.06.12✎ 11:00 | 
        можешь конечно, написать так
 
 |Условие(Запрос.ДолгЗак >0 );
 
 вот только полагаться на результат работы такого запроса не стоит - условие будет выполнятся для каждого вычисления функции.
 |  | 
    
        | 6
    
        orange777   20.06.12✎ 11:09 | 
        а нельзя уже потом отобрать нужные значения? после выполнения запроса     |  | 
    
        | 7
    
        Ёпрст   гуру 20.06.12✎ 11:10 | 
        (6) нужно     |  | 
    
        | 8
    
        Andrey1957   20.06.12✎ 11:19 | 
        (6) Да можно, но для этого придется каждую клеточку таблицы, где у меня сейчас стоит просто Запрос.ИмяПоля (и таких клеточек более десятка) оформлять переменными, кои нужно будет рассчитывать в модуле, в т.ч. и все итоги. А запрос в форме по 5 группировкам (это я упрощенный вариант привел, чтобы обозначить проблему). Если аналога having в 7 не удастся соорудить, то придется все перелопачивать, начиная с таблицы.
 Всем спасибо.
 |  | 
    
        | 9
    
        Ёпрст   гуру 20.06.12✎ 11:20 | 
        (8) пиши прямой запрос и там делай что хочешь.     |  | 
        Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший