Имя: Пароль:
1C
1C 7.7
v7: запрос, условие, функция в фукнции 1с 7.7
0 DmitriyDI
 
16.06.14
10:24
Есть функция:

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

надо сделать чтобы было так:

СуммаСумма = Расход(?(Статья.МетодРс = 3,Сумма/Статья.КоличествоМесяцев,Сумма)) когда ......

Пробовал так:

|Функция СуммаСумма1 = Расход(Сумма) когда (((Статья.МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((Статья.МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((Статья.МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Функция СуммаСумма = Сумма(?(Статья.МетодРс = 3,Запрос.СуммаСумма1/Статья.КоличествоМесяцев,Запрос.СуммаСумма1));

Расчеты не правильные тогда.

Подскажите как можно это реализовать?
1 DmitriyDI
 
16.06.14
11:28
призываю 7рочных гуру в ветку!
2 Ёпрст
 
гуру
16.06.14
11:35
весь текст запроса покажи
3 DmitriyDI
 
16.06.14
11:39
|Период с ВыбНач2 по ВыбКонПериода;
|ЦФО = Регистр.ДИР.ЦФО;
|БизнесНаправление = Регистр.ДИР.БизнесНаправление;
|Статья = Регистр.ДИР.Статья;
|ДатаП = Регистр.ДИР.ДатаПланирования;
|Сумма = Регистр.ДИР.Сумма;
|Организация = Регистр.ДИР.Организация;
|ДатаФактРасходов = Регистр.ДИР.ДатаФактРасходов;
|Функция СуммаСумма = Расход(Сумма) когда (((Статья.МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((Статья.МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((Статья.МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Условие(ЦФО в СписокЦФО);
|Условие(Организация в СписокОрганизаций);
|Условие ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон1));
|Условие(ВыбБизнесНаправления = БизнесНаправление);
|Группировка ЦФО без групп;
|Группировка Статья все;
4 DmitriyDI
 
16.06.14
11:40
(3) ток без строчки
|Условие ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон1));
5 Ёпрст
 
гуру
16.06.14
11:43
ну так напиши

|Статья = Регистр.ДИР.Статья.МетодРс;
|КоличествоМесяцев= Регистр.ДИР.Статья.КоличествоМесяцев;
|Функция СуммаСумма = Расход(Сумма);
|Функция Вася = Сумма(?(МетодРс = 3,Сумма/КоличествоМесяцев,Сумма));
6 DmitriyDI
 
16.06.14
11:44
(5) не совсем понял, а как сумма которая в Вася будет передаваться именно расходная?
7 Ёпрст
 
гуру
16.06.14
11:46
(6) что такое расходная ?
8 Ёпрст
 
гуру
16.06.14
11:46
вася будет считать то же, что и СуммаСумма
9 Ёпрст
 
гуру
16.06.14
11:47
в данном случае.
10 Ёпрст
 
гуру
16.06.14
11:47
только со своим условием
11 DmitriyDI
 
16.06.14
11:56
(10) что-то Вася мне не то выдал! написал я так:

|Функция СуммаСумма1 = Расход(Сумма) когда (((Статья.МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((Статья.МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((Статья.МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Функция СуммаСумма = Сумма(?(Статья.МетодРс = 3,Сумма/Статья.КоличествоМесяцев,Сумма));";

цифры заоблачные, оставляю

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

цифры норм, только не хватает поделить на количество месяцев
12 PuhUfa
 
16.06.14
12:03
(11) ты про какие суммы говоришь? в одном случае у тебя 2 функции в другом 1
13 Ёпрст
 
гуру
16.06.14
12:07
п...ц
14 Ёпрст
 
гуру
16.06.14
12:07
Прочитай (0)
15 Ёпрст
 
гуру
16.06.14
12:07
надо сделать чтобы было так:

СуммаСумма = Расход(?(Статья.МетодРс = 3,Сумма/Статья.КоличествоМесяцев,Сумма)) когда ......

это делает запрос в (5)

А что тебе надо - хз.
16 Ёпрст
 
гуру
16.06.14
12:08
Ну и за Статья.МетодРс = 1 в тексте запроса - расстрел на месте
17 DmitriyDI
 
16.06.14
12:13
(16) там расчетов потом 4 тысячи строк крутят эти результаты, так что поэтому и приходится все в запросе оставлять, чтобы переписать побыстрее
18 DmitriyDI
 
16.06.14
12:14
(15) разве это не то что в (5)?

|Функция СуммаСумма1 = Расход(Сумма) когда (((Статья.МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((Статья.МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((Статья.МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Функция СуммаСумма = Сумма(?(Статья.МетодРс = 3,Сумма/Статья.КоличествоМесяцев,Сумма));";
19 Ёпрст
 
гуру
16.06.14
12:32
(18) нет
20 DmitriyDI
 
16.06.14
12:39
(19) а это?
|Функция СуммаСумма = Расход(Сумма) когда (((Статья.МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((Статья.МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((Статья.МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Функция Вася = Сумма(?(Статья.МетодРс = 3,Сумма/Статья.КоличествоМесяцев,Сумма));";
21 Ёпрст
 
гуру
16.06.14
12:41
хз, че тебе надо, проверяй так:

|Статья = Регистр.ДИР.Статья.МетодРс;
|КоличествоМесяцев= Регистр.ДИР.Статья.КоличествоМесяцев;

|Функция СуммаСумма1 = Расход(Сумма) когда (((МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Функция СуммаСумма = Сумма(?(МетодРс = 3,Сумма/КоличествоМесяцев,Сумма)) когда (((МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
22 DmitriyDI
 
16.06.14
12:58
(21) спасибо большое!
вроде вот так получилось

|Функция СуммаСумма1 = Расход(Сумма) когда (((МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));
|Функция СуммаСумма = Максимум(?(МетодРс = 3,Запрос.СуммаСумма1/КоличествоМесяцев,Запрос.СуммаСумма1)) когда (((МетодРс = 1) и ((ДатаФактРасходов>=ВыбНач1)и(ДатаФактРасходов<=ВыбКон1))) ИЛИ ((МетодРс = 2) и ((ДатаФактРасходов>=ВыбНачПериода )и(ДатаФактРасходов<=ВыбКон2)))  ИЛИ ((МетодРс = 3) и ((ДатаФактРасходов>=ВыбНач2)и(ДатаФактРасходов<=ВыбКон2))));";
23 PuhUfa
 
16.06.14
13:02
печаль