Умножение в запросе [Решение] #432196


#0 by twilight5023
Наткнулся тут на похожую тему - , вообщем в некоторых случаях нужно реализовать умножение в запросе. Пример реальной задачи. Торговля и Склад. Товар забит с базовой единицей штука, а основной, ну к примеру коробка. Требуется в отчете "Ведомость по остаткам ТМЦ" получить результаты в килограммах. Решением в такой ситуации может послужить конечно списание всего товара, заведение в справочник номенклатуры нового товара, с базовой единицей кг. А можно и изменить запрос. Только вот каким образом умножать количество на вес базовой единицы, чтобы еще и в группах получать корректные значения. На самом деле все очень просто, вводим в запрос дополнительную переменную вес: |Вес = Регистр.ОстаткиТМЦ.Номенклатура.БазоваяЕдиница.Вес, Функция КоличествоНачОст у нас уже есть, остается придумать как посчитать КоличествоНачОст * Вес (при обходе группировок делать это тяжко, принимая во внимание что у нас выводятся итоги по группам, намного проще было бы, если бы процедура умножения производилась в самом запросе. Если сделать что-то вроде: |Функция ВесНачОст = Сумма(Запрос.КоличествоНачОст * Вес); То результат получится. Но к сожалению функция Сумма округляет результат до целых, отбрасывая дробную часть. Что непреемлемо. Несколько простых примеров: при одном "суммировании" внутри запроса выдаст 10 вместо 9.9, однако Выдаст 9.9 с точностью, которую имеет ПеременнаяЗапроса. Т.е. если у переменной запроса точность знаков после запятой 4, то Сумма выдаст 9.9000. Итого для подсчета начального остатка веса получаем следующую функцию: Не так красиво на первый взгляд - но зато работает, и выдает корректные результаты по группам.
#1 by Ковычки
Условие( и че хошь считай
#2 by twilight5023
Ну расскажи мне как посчитать с условием начальный остаток по регистру ОстаткиТМЦ в тоннаже? Нет, даже проще задача ... получить в запросе начальный остаток по ресурсу Количество умноженный на 2. Именно чтобы умножение происходило в запросе. Куда и как ты собираешься это условие впихнуть?
#3 by twilight5023
+2 С функцией НачОст в запросе ты никакого умножения не сделаешь. А на функцию Сумма не наложишь условия чтобы она считала начальный остаток. И?
#4 by Ковычки
а кто сказал, что результат будет в запросе
#5 by twilight5023
В условии зачачи сказано, что требуется получить "результат умножения в запросе". При обходе группировок зачастую сложновато что-то подсчитывать, в случае если требуется получить итоги по группам.
#6 by МихаилМ
то решение красивое. НО для SQL версии не эффективное тк подобное умножение 1с77 будет выполнять построчно на клиенте а затем агрегировать . те объем пересылаемой выборки будет на порядки больше.
#7 by Fragster
Сумма(Выразить(9.9 как Число 10,3)) или какой там синтаксис...
#8 by Fragster
а, это 7... тогда пас.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С