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