Вход | Регистрация


1С:Предприятие ::

Метки: 

Вычисление процента от числа в запросе через СКД

Я
   bplmeddy
 
13.04.17 - 13:11
Доброго времени суток.
При написании отчёта на СКД, необходимо посчитать процент от числа.
Текст запроса (ВНИМАНИЕ! Много текста!)

ВЫБРАТЬ
    КассыОбороты.БалансКассыРасход,
    ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2)) КАК РасходДол,
    КассыОбороты.Период КАК Период,
    КОЛИЧЕСТВО(РасходнойДокумент.Ссылка) КАК КолПрод,
    ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот КАК СумаПродаж,
    ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот КАК СумаЗакупки,
    ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот КАК Прибыль,
    (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100 КАК ВПрибыль,
    (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот * 100 КАК ВСебестоимость,
    Валюты.Курс
ИЗ
    РегистрНакопления.Кассы.Обороты(, , День, ТорговаяТочкаКассы.Ссылка = &ТоргТочка) КАК КассыОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Склад.Ссылка = &ТоргТочка) КАК ПродажиОбороты
        ПО КассыОбороты.Период = ПродажиОбороты.Период
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнойДокумент КАК РасходнойДокумент
        ПО (РасходнойДокумент.Дата МЕЖДУ КассыОбороты.Период И КОНЕЦПЕРИОДА(КассыОбороты.Период, ДЕНЬ))
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
        ПО КассыОбороты.Валюта = Валюты.Ссылка
ГДЕ
    Валюты.Ссылка = &Валюта
    И РасходнойДокумент.Склад = &ТоргТочка

СГРУППИРОВАТЬ ПО
    КассыОбороты.БалансКассыРасход,
    КассыОбороты.Период,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.ЦенаПродОборот,
    ПродажиОбороты.ЦенаЗакупОборот,
    ПродажиОбороты.ПрибыльОборот,
    Валюты.Курс

УПОРЯДОЧИТЬ ПО
    Период

Так вот, подозреваю, что проблема состоит в том, что система считает значение по формуле, но с неправильной последовательностью. Круглые скобки тоже игнорирует (к примеру: в тексте запроса проставляю скобки - без изменений, если скобки проставить а потом открыть конструктор запроса и даже без правок закрыт, система скобки отсекает). Буду очень благодарен за помощь в решении данной проблемы.
 
 
   bplmeddy
 
1 - 13.04.17 - 13:12
(0) И да, оперировать в формулах значениями полученными в ходе предыдущих вычислений (СумаПродаж, СумаЗакупки) тоже не получается.
   bplmeddy
 
2 - 13.04.17 - 13:14
(1) Забыл сказать: на выходе результаты подсчётов получаются совершенно астрономические.
   bplmeddy
 
3 - 13.04.17 - 13:17
(0) Ещё уточнение, неправильный подсчёт идёт по этим формулам:

(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100 КАК ВПрибыль,
    (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот * 100 КАК ВСебестоимость,
   bplmeddy
 
4 - 13.04.17 - 13:59
Я так понимаю, никто не в курсе ? =)
   bplmeddy
 
5 - 13.04.17 - 14:10
Лююююдиииии ау ! =)
   anreko
 
6 - 13.04.17 - 14:16
Видимо нужно срочно менять блок "СГРУППИРОВАТЬ ПО", иначе без глубокого анализа не понять, что в итоге СУБД может выдать.
   Одинесю
 
7 - 13.04.17 - 14:17
Разбей формулу на составляющие и проверяй что не так.
   bplmeddy
 
8 - 13.04.17 - 14:18
(6) (7) Сейчас попробую.
   anreko
 
9 - 13.04.17 - 14:25
А если такой попробовать, что-нибудь запрос Вам выдаст?

ВЫБРАТЬ
    СУММА(КассыОбороты.БалансКассыРасход), 
    СУММА(ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) КАК РасходДол, 
    КассыОбороты.Период КАК Период,
    КОЛИЧЕСТВО(РасходнойДокумент.Ссылка) КАК КолПрод,
    СУММА(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот) КАК СумаПродаж,
    СУММА(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) КАК СумаЗакупки,
    СУММА(ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) КАК Прибыль,
    СУММА((ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот * 100) КАК ВПрибыль,
    СУММА((ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаПродОборот - (ВЫРАЗИТЬ(КассыОбороты.БалансКассыРасход / Валюты.Курс КАК ЧИСЛО(10, 2))) - ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот) / ПродажиОбороты.КоличествоОборот * ПродажиОбороты.ЦенаЗакупОборот * 100) КАК ВСебестоимость,
    Валюты.Курс
ИЗ
    РегистрНакопления.Кассы.Обороты(, , День, ТорговаяТочкаКассы.Ссылка = &ТоргТочка) КАК КассыОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Склад.Ссылка = &ТоргТочка) КАК ПродажиОбороты
        ПО КассыОбороты.Период = ПродажиОбороты.Период
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнойДокумент КАК РасходнойДокумент
        ПО (РасходнойДокумент.Дата МЕЖДУ КассыОбороты.Период И КОНЕЦПЕРИОДА(КассыОбороты.Период, ДЕНЬ)) 
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
        ПО КассыОбороты.Валюта = Валюты.Ссылка
ГДЕ
    Валюты.Ссылка = &Валюта
    И РасходнойДокумент.Склад = &ТоргТочка

СГРУППИРОВАТЬ ПО
    КассыОбороты.Период,
    Валюты.Курс

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



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует