|   |   | 
| 
 | Вычисление процента от числа в запросе через СКД | ☑ | ||
|---|---|---|---|---|
| 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) Долгих, здоровых и богатых тебе лет, добрый человек. =) Спасибо, всё теперь правильно, сам бы до такой фигни вряд-ли додумался бы.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |