Не работает условие в запросе . Почему ? #30639


#0 by Serg Zelenko
Не хочет работать такая конструкция:|Функция НачГРН = НачОст(СуммаГРН) Когда (РасхГРН <> 0);Или так вообще нельзя ? В каком порядке вообще вычисляются функции в запросе ? Может , сначала вычисляется НачОст, хоть и объявлена она после Расход(СуммаГРН) ?
#1 by Сэм
Я бы попробовал так:
#2 by Serg Zelenko
Так тоже не работает, уже пробовал.
#3 by Сэм
Ну, на вскидку... релиз-то какой? В старых много чего не работало. Особо в 4.
#4 by ex3S
По моему значение функций в самом запросе использовать нельзя. Остается делать проверку только уже при разборках группировок.;o)
#5 by Сэм
А по поводу функций. Они вычисляются, а потом сортируются и отбираются.
#6 by Serg Zelenko
To . По-моему, ты неправ. Ведь работает же конструкция :|Функция РасхГРН = Расход(СуммаГРН);|Функция НачГРН = НачОст(СуммаГРН) Когда (5 > 0); т.е. с заведомо истинным условием. Насчет группировки - согласен. Скорее всего она происходит уже на этапе "Обработки результатов запроса...". А заполняется выборка исходя из вычисляемых функций. Т.е. отбор происходит на этапе формирования запроса.В общем, я так понял, что мне не удастся провернуть задуманное. Придется делать как в .
#7 by Сэм
2 А как работает? Не понял? Она ж просто вэтом случае все! берет (все вычисляет) Где тут работа? Смысл вот в чем. Функции вычисляются все, а потм смотрятся условия. Если условию не удовлетворяет, то рузультата как бы нет. Если при этом все другие функи=0 или их тоже как бы нет, то эта "запись" пропускается. Попробуй (Когда Сотр=ВыбСотр) (или что подобное) только для одной функции, для других сотров что выдаст? Разве ноль?
#8 by Сэм
Честно говоря, разбирался когда-то с этим, но сейчас запутался. А вспоминать-проверять некогда.ЗЫ Так что может я и не прав.ЗЫЫ И все-таки посмотри на релиз, ибо помню что-то у меня с хитрым каким то условием работало где-то. Не помню только где смотреть ;)
#9 by Serg Zelenko
Релиз 14. Ты, наверное, прав в том, что функции вычисляются сразу.А мне как раз и нужно, чтобы для некоторых элементов некоторые функции не вычислялись. Например, если в заданом периоде прихода/расхода не было, чтобы не учитывались в итогах начальные остатки по этим элементам.
#10 by Сэм
Сидим тут и пытаемся придумать, когда может понадобиться такой отчет.Менеджеру, чтобы не видел, что у него не продается? ;)Налоговой по остаткам? Прикольно.Либо в цикле крутить,либо через ТЗ.Или все же помучить условие, но учти, что начост и коност не считаются на группировку по документу (только по справочникам)
#11 by TelePort
#12 by Борхес
Ну во-первых не "Условие.(условие)", а :ТекстЗапроса=ТекстЗапроса+"|Условие (РасхГРН <> 0);"Это раз. Во-вторых даже такая конструкция применяется совершенно в других случаях. Ты бы соображал перед тем как советовать, да?
#13 by Sash_Ko
|Функция НачГРН = НачОст(СуммаГРН) Когда (РасхГРН <> 0);Во-вторых. Что тебе это даст? И что имеется в виду, когда говорится не работает. ВЕДЬ ВЛЮЧАЮТСЯ В ЗАПРОС РЕЗУЛЬТАТЫ ВСЕХ ФУНКЦИЙ (РасхГРН и НачГРН). И ты все равно будешь выбирать в разборе группировки ненулевые НачОст. Или я чего-то не понимаю?
#14 by Sash_Ko
. К . Пардон за первый совет. Невнимательно прочитал вопрос и руками набросал то же самое.
#15 by Sash_Ko
. Извини за сумбур. Вечер. Уже иду домой. Не прочитал 9.А в 12. я все-таки имел в виду Когда (СуммаГРН <> 0), но это тоже не верно в данном случае.**Я так понимаю, что ты хочешь получить 0 в функции расход, когда остаток 0. Тогда не должны в запрос попадать эти значения. Все равно не получится - попробуй подставь в условие по обеим функциям СуммаГРН <> 0,- выведутся нулевые строки, для которых без условия - ненулевое значение. Следовательно, присоединяюсь к мнению Сэма в . - сначала все функции, а потом проверяются условия.**Кстати очень странно. В док-ции сказано, что функция в момент объявления становится внутренней переменной запроса, а вторая функция ее не видит.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С