|
Вычисление процента от числа в запросе через СКД | ☑ | ||
---|---|---|---|---|
0
bplmeddy
13.04.17
✎
13:11
|
Доброго времени суток.
При написании отчёта на СКД, необходимо посчитать процент от числа. Текст запроса (ВНИМАНИЕ! Много текста!) ВЫБРАТЬ КассыОбороты.БалансКассыРасход, ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2)) КАК РасходДол, КассыОбороты.Период КАК Период, КОЛИЧЕСТВО(РасходнойДокумент.Ссылка) КАК КолПрод, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот КАК СумаПродаж, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот КАК СумаЗакупки, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот КАК Прибыль, (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100 КАК ВПрибыль, (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот * 100 КАК ВСебестоимость, Валюты.Курс ИЗ РегистрНакопления.Кассы.Обороты(, , День, ТорговаяТочкаКассы.Ссылка = &ТоргТочка) КАК КассыОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Склад.Ссылка = &ТоргТочка) КАК ПродажиОбороты ПО КассыОбороты.Период = ПродажиОбороты.Период ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнойДокумент КАК РасходнойДокумент ПО (РасходнойДокумент.Дата МЕЖДУ КассыОбороты.Период И КОНЕЦПЕРИОДА(КассыОбороты.Период, ДЕНЬ)) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты ПО КассыОбороты.Валюта = Валюты.Ссылка ГДЕ Валюты.Ссылка = &Валюта И РасходнойДокумент.Склад = &ТоргТочка СГРУППИРОВАТЬ ПО КассыОбороты.БалансКассыРасход, КассыОбороты.Период, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.ЦенаПродОборот, ПродажиОбороты.ЦенаЗакупОборот, ПродажиОбороты.ПрибыльОборот, Валюты.Курс УПОРЯДОЧИТЬ ПО Период Так вот, подозреваю, что проблема состоит в том, что система считает значение по формуле, но с неправильной последовательностью. Круглые скобки тоже игнорирует (к примеру: в тексте запроса проставляю скобки - без изменений, если скобки проставить а потом открыть конструктор запроса и даже без правок закрыт, система скобки отсекает). Буду очень благодарен за помощь в решении данной проблемы. |
|||
1
bplmeddy
13.04.17
✎
13:12
|
(0) И да, оперировать в формулах значениями полученными в ходе предыдущих вычислений (СумаПродаж, СумаЗакупки) тоже не получается.
|
|||
2
bplmeddy
13.04.17
✎
13:14
|
(1) Забыл сказать: на выходе результаты подсчётов получаются совершенно астрономические.
|
|||
3
bplmeddy
13.04.17
✎
13:17
|
(0) Ещё уточнение, неправильный подсчёт идёт по этим формулам:
(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100 КАК ВПрибыль, (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот * 100 КАК ВСебестоимость, |
|||
4
bplmeddy
13.04.17
✎
13:59
|
Я так понимаю, никто не в курсе ? =)
|
|||
5
bplmeddy
13.04.17
✎
14:10
|
Лююююдиииии ау ! =)
|
|||
6
anreko
13.04.17
✎
14:16
|
Видимо нужно срочно менять блок "СГРУППИРОВАТЬ ПО", иначе без глубокого анализа не понять, что в итоге СУБД может выдать.
|
|||
7
Одинесю
13.04.17
✎
14:17
|
Разбей формулу на составляющие и проверяй что не так.
|
|||
8
bplmeddy
13.04.17
✎
14:18
|
(6) (7) Сейчас попробую.
|
|||
9
anreko
13.04.17
✎
14:25
|
А если такой попробовать, что-нибудь запрос Вам выдаст?
ВЫБРАТЬ СУММА(КассыОбороты.БалансКассыРасход), СУММА(ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) КАК РасходДол, КассыОбороты.Период КАК Период, КОЛИЧЕСТВО(РасходнойДокумент.Ссылка) КАК КолПрод, СУММА(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот) КАК СумаПродаж, СУММА(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) КАК СумаЗакупки, СУММА(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) КАК Прибыль, СУММА((ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100) КАК ВПрибыль, СУММА((ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот * 100) КАК ВСебестоимость, Валюты.Курс ИЗ РегистрНакопления.Кассы.Обороты(, , День, ТорговаяТочкаКассы.Ссылка = &ТоргТочка) КАК КассыОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Склад.Ссылка = &ТоргТочка) КАК ПродажиОбороты ПО КассыОбороты.Период = ПродажиОбороты.Период ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнойДокумент КАК РасходнойДокумент ПО (РасходнойДокумент.Дата МЕЖДУ КассыОбороты.Период И КОНЕЦПЕРИОДА(КассыОбороты.Период, ДЕНЬ)) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты ПО КассыОбороты.Валюта = Валюты.Ссылка ГДЕ Валюты.Ссылка = &Валюта И РасходнойДокумент.Склад = &ТоргТочка СГРУППИРОВАТЬ ПО КассыОбороты.Период, Валюты.Курс УПОРЯДОЧИТЬ ПО Период |
|||
10
bplmeddy
13.04.17
✎
14:25
|
(6) Ничего не поменялось (при очистке группировки данные вообще начинают множественно дублироваться)
|
|||
11
bplmeddy
13.04.17
✎
14:28
|
(9) Всё то-же самое. =(
|
|||
12
bplmeddy
13.04.17
✎
14:30
|
ВЗЫВАЮ К СИЛЕ ВОЛШЕБНОГО ФОРУМА !!!
|
|||
13
Вафель
13.04.17
✎
14:32
|
% = А/Б*100
|
|||
14
Вафель
13.04.17
✎
14:33
|
но тут скорее всего что процент нужно по группировкам считать.
Те выражение нужно писать в ресурсах |
|||
15
dezss
13.04.17
✎
14:34
|
Если это взять в скобки, то конструктор их отсекает? О_о
ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот |
|||
16
bplmeddy
13.04.17
✎
14:34
|
(13) Формула вычисления процента мне известна.
|
|||
17
bplmeddy
13.04.17
✎
14:34
|
(15) Да, после открытия, закрытия конструктора, скобки пропадают.
|
|||
18
dezss
13.04.17
✎
14:34
|
(15) Всмысле, вот так
(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот) * 100 КАК ВПрибыль, |
|||
19
bplmeddy
13.04.17
✎
14:35
|
(18) Да, система их игнорирует, а конструктор убирает.
|
|||
20
bplmeddy
13.04.17
✎
14:35
|
Прям восстание машин...
|
|||
21
dezss
13.04.17
✎
14:36
|
(20) А если в вычисляемые поля запихнуть?
|
|||
22
bplmeddy
13.04.17
✎
14:36
|
(21) Хмм, сейчас попробую.
|
|||
23
dezss
13.04.17
✎
14:37
|
(20) тогда есть одно решение
(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот / ПродажиОбороты.ЦенаПродОборот * 100 КАК ВПрибыль, |
|||
24
anreko
13.04.17
✎
14:37
|
Что мешает использовать временную таблицу, там рассчитать все цифры, а дополнительным запросом прибавить проценты?
|
|||
25
Йохохо
13.04.17
✎
14:54
|
в справке написано что надо так
ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход КАК ЧИСЛО(10, 2)) / Валюты.Курс |
|||
26
bplmeddy
13.04.17
✎
14:55
|
(25)
Ошибка получения информации набора данных по причине: Ошибка в запросе набора данных по причине: {(9, 127)}: Синтаксическая ошибка (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход КАК ЧИСЛО(10, 2) <<?>>/ Валюты.Курс)) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100 КАК ВПрибыль, |
|||
27
bplmeddy
13.04.17
✎
14:56
|
(26) Упс...секунду, затупил.
|
|||
28
dezss
13.04.17
✎
14:57
|
(27) ты попробуй 2 раза делить, как в (23)
|
|||
29
bplmeddy
13.04.17
✎
14:57
|
(27) (26) (25) Нет, все равно не работает. А вот в (21) вроде получается, сейчас попробую полностью переделать и отпишусь.
|
|||
30
dezss
13.04.17
✎
14:59
|
(29) да погодь ты все ломать....сделай как в (23)
|
|||
31
2dolist
13.04.17
✎
14:59
|
в конструкторе запросов забей, да покрути формулы
|
|||
32
bplmeddy
13.04.17
✎
15:05
|
(30) Сейчас попробую.
|
|||
33
bplmeddy
13.04.17
✎
15:12
|
(30) (28) (23) Долгих, здоровых и богатых тебе лет, добрый человек. =) Спасибо, всё теперь правильно, сам бы до такой фигни вряд-ли додумался бы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |