Имя: Пароль:
1C
1C 7.7
v7: подскажите с запросом на 77
,
0 DmitriyDI
 
11.06.14
09:52
переделываю отчет, там достаточно сложные расчеты, вообщем 4000 строк, и как-то не хочется все это переписывать и было бы идеально поменять в запросе это все дело просто напросто и сделать так:

Есть признак у статьи, он равняется 1 или 2, вот если он 1, тогда брать сумму выборки между ДатаНач и ДатаКон, а когда он 2, тогда эту же сумму между ДатаНач1 и ДатаКон2.

можно так на семерочке сделать?
1 Ёпрст
 
11.06.14
09:54
Разрешаю, делай
2 DmitriyDI
 
11.06.14
09:56
(1) просто не очень понимаю, как это сделать?
3 DCKiller
 
11.06.14
09:56
Покажи текст запроса. Хоть посмотреть, что там за сложные расчеты в нем такие...
4 Ёпрст
 
11.06.14
09:57
у функции в запросе есть Когда().. туда запихать условие на дату. Усё.
5 acanta
 
11.06.14
09:57
В шапке запроса максимальный период, остальное в
Сумма () когда
6 DmitriyDI
 
11.06.14
09:57
(3) там расчеты все идут дальше сложные, запрос достаточно легкий, берет движения  по регистру в разрезе нескольких группировок.
7 DmitriyDI
 
11.06.14
09:59
(4) (5) да я так делаю
|Функция СуммаСумма =Расход(Сумма) когда ((Статья.МетодРасчета = 2) и ((ДатаП>=ДатаНач )и(ДатаП<=ДатаКон)));  

|Функция СуммаСумма =Расход(Сумма) когда ((Статья.МетодРасчета = 1) и ((ДатаП>=ДатаНач1)и(ДатаП<=ДатаКон1)));

совсем не понимаю как это связать!
8 DCKiller
 
11.06.14
10:00
(7) ДатаП - это переменная запроса?
9 DmitriyDI
 
11.06.14
10:00
(8) да
10 DCKiller
 
11.06.14
10:01
(9) А что не работает?
11 DmitriyDI
 
11.06.14
10:19
ругается что использовал переменную более одного раза
12 DmitriyDI
 
11.06.14
10:22
а не получится если я сделаю так:

|Условие ((Статья.МетодРасчета = 2) и ((ДатаП>=ДатаНач )и(ДатаП<=ДатаКон)));
|Условие ((Статья.МетодРасчета = 1) и ((ДатаП>=ДатаНач1)и(ДатаП<=ДатаКон1)));

просто два условия воткну и все
13 vtolga
 
11.06.14
10:25
СуммаСумма и СуммаСумма1 хотя бы сделай :)
14 DmitriyDI
 
11.06.14
10:26
(13) вот именно я и хочу уйти от разделения этой переменной
15 vtolga
 
11.06.14
10:26
Ты в одну переменную 2 значения запихнуть пытаешься
16 DCKiller
 
11.06.14
10:27
(14) И как ты себе это представляешь? Как, по-твоему, будет выглядеть результат?
17 DCKiller
 
11.06.14
10:30
Ну, а если вот так:

Функция СуммаСумма = Расход(Сумма) когда (((Статья.МетодРасчета = 1) и ((ДатаП>=ДатаНач1)и(ДатаП<=ДатаКон1))) ИЛИ (((Статья.МетодРасчета = 2) и ((ДатаП>=ДатаНач )и(ДатаП<=ДатаКон))));

?
18 vtolga
 
11.06.14
10:31
как -то так, наверное
Функция КоличествоСумма = Сумма(?Штучный=1,Количество*Товар.ВесштукиКг,Количество));
19 vtolga
 
11.06.14
10:31
это работало
20 vtolga
 
11.06.14
10:32
Скобку пропустила
Функция КоличествоСумма = Сумма(?(Штучный=1,Количество*Товар.ВесштукиКг,Количество));
21 DmitriyDI
 
11.06.14
10:32
(16) в 8ке вот так
ВЫБРАТЬ
    ДвиженияТоваровОбороты.Товар,
    ДвиженияТоваровОбороты.СуммаОборот
ИЗ
    РегистрНакопления.ДвиженияТоваров.Обороты(&НачПериода, &КонПериода, Запись,) КАК ДвиженияТоваровОбороты
ГДЕ
    ВЫБОР
            КОГДА ДвиженияТоваровОбороты.Товар.МетодРасчета = 1
                ТОГДА ДвиженияТоваровОбороты.Период МЕЖДУ &НачДата1 И &НачДата2
            ИНАЧЕ ДвиженияТоваровОбороты.Период МЕЖДУ &НачДата3 И &НачДата3
        КОНЕЦ
22 DmitriyDI
 
11.06.14
10:33
(17) сейчас попробую
23 DmitriyDI
 
11.06.14
10:45
(17) блин, при Статья.МетодРасчета = 2 он берет значения за 2 месяца
24 DmitriyDI
 
11.06.14
10:45
(23) точнее за два периода без разделения
25 DmitriyDI
 
11.06.14
10:51
(17) Вру!!!! Вру!!!! Все заработало, спасибо большое))))!!!!!!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.