Имя: Пароль:
1C
1C 7.7
v7: запрос, условие сумма документа
0 zalst
 
05.06.14
16:48
Наверное где-то туплю, помогите
задача примитив, нужно через запрос отоборать документ, сумма которого = заданной

Текст запроса:
    |Период с '30.05.14' по '30.05.14';
    |ОбрабатыватьДокументы все;
    |Счет = Документ.Счет.ТекущийДокумент;
    |СуммаСНДС = Документ.Счет.СуммаСНДС;
    |Функция СуммаДок = Сумма(СуммаСНДС);
    |Группировка Счет;
    |Условие((Запрос.СуммаДок = ЗаданнаяСумма) или (ЗаданнаяСумма = 0));

Если запускаем с "заданнаясумма = 0" то все ок, выводит правильные итоговые суммы документов. если вносим фильтр по сумме - нифига не выводится. не могу понять почему, кто поможет?

(проблему конечно давно решил, вставил фильтр вручную позже, но очень хочется понять где ошибаюсь)
1 Ёпрст
 
гуру
05.06.14
16:53
(0) f ytabr cnfdbnm abkmnh yf bnjub pfghjcf
2 Ёпрст
 
гуру
05.06.14
16:54
tckb xt? having-uf d xjhyjv pfghjct ytvf? tckb njkmrj yt gbcfnm zdyj? rfr bnju gj rjkjyrt
3 WB789
 
05.06.14
16:55
Что первично Функция или Условие?
4 zalst
 
05.06.14
16:56
функция, как показано.. хмм, а это мысль! спасибо, сейчас проверю себя! не подумал об этом
5 zalst
 
05.06.14
16:57
не.. пробовал ставить условие и перед группировкой, и перед функцией, не пашет
6 Ёпрст
 
гуру
05.06.14
17:00
читай (1) и (2) .
7 Ёпрст
 
гуру
05.06.14
17:01
если че, условие будет накладываться на каждую строку документа.
Это обычный where , а не having
8 Ёпрст
 
гуру
05.06.14
17:01
обойти тоже можно, через Итог()
9 zalst
 
05.06.14
17:02
ага.. т.е. условие на итоги ставить бесполезно, понял, спасибо. нужно вручную значит проверку
10 zalst
 
05.06.14
17:03
для итога должно быть соот-вущее поле в реквизите, а оно не всегда есть :), если имеется ввиду Док.Итог("сумма")
11 Ёпрст
 
гуру
05.06.14
17:04
(10) Док.Итог("сумма") можно заставить работать всегда, даже если нет галки итог по колонке
12 zalst
 
05.06.14
17:06
как :)? или в смысле док.итог("сумма") всегда прокатит в запросе?
13 zalst
 
05.06.14
17:14
огромное спасибо за помощь
14 Ёпрст
 
гуру
05.06.14
17:19
(12) если не стоит галка, то одна строка кода и Док.Итог заработает.. правда, 1с-ине от этого не легче..
выбрать строки надо перед этим.
15 an-korot
 
05.06.14
18:13
ты путаешь запрос 8 и 7 ))

ты переменную счет уже объявил и заново обращаться к ее корню не нужно:

Текст запроса:
    |Период с '30.05.14' по '30.05.14';
    |ОбрабатыватьДокументы все;
    |Счет = Документ.Счет.ТекущийДокумент;
    |СуммаСНДС = Счет.СуммаСНДС;
    |Функция СуммаДок = Сумма(СуммаСНДС);
    |Группировка Счет;
    |Условие((СуммаДок = ЗаданнаяСумма) или (ЗаданнаяСумма = 0));
16 Ёпрст
 
гуру
05.06.14
18:14
(15) подумай еще
17 an-korot
 
05.06.14
18:19
(16) че тут думать пилить нужно )))
да, да... суммаСНДС новая переменная и нужно к корню обращаться

|СуммаСНДС = Документ.Счет.СуммаСНДС;
18 an-korot
 
05.06.14
18:20
Текст запроса:
    |Период с '30.05.14' по '30.05.14';
    |ОбрабатыватьДокументы все;
    |Счет = Документ.Счет.ТекущийДокумент;
    |СуммаСНДС = Документ.Счет.СуммаСНДС;
    |Функция СуммаДок = Сумма(СуммаСНДС);
    |Группировка Счет;
    |Условие((СуммаДок = ЗаданнаяСумма) или (СуммаДок = 0));
19 Ёпрст
 
гуру
06.06.14
08:59
(18) СуммаСНДС - реквизит табличной части. Автору нужно наложить условие на сумму документа, которая = Итог(СуммаСНДС)
, дальше см. (16)