Вход | Регистрация

Форумы на Кубань.Ру


1С:Предприятие ::

Метки: 

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

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



Список тем форума

Форум Территория 1С

  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует