Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
 
Ответить в эту темуОткрыть новую тему
> 1С 7.7. Умножение в запросе., Собственно "фишечка". Особенности движка.
Decker
сообщение 16.9.2009, 18:11
Сообщение #1


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



(с) http://www.forum.mista.ru/topic.php?id=432196

Наткнулся тут на похожую тему - Умножение в запросе , вообщем в некоторых случаях нужно реализовать умножение в запросе. Пример реальной задачи. Торговля и Склад. Товар забит с базовой единицей штука, а основной, ну к примеру коробка. Требуется в отчете "Ведомость по остаткам ТМЦ" получить результаты в килограммах. Решением в такой ситуации может послужить конечно списание всего товара, заведение в справочник номенклатуры нового товара, с базовой единицей кг. А можно и изменить запрос. Только вот каким образом умножать количество на вес базовой единицы, чтобы еще и в группах получать корректные значения. На самом деле все очень просто, вводим в запрос дополнительную переменную вес:

Код
|Вес = Регистр.ОстаткиТМЦ.Номенклатура.БазоваяЕдиница.Вес,
|      Регистр.РезервыТМЦ.Номенклатура.БазоваяЕдиница.Вес;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоНачОст          = НачОст(Количество);


Функция КоличествоНачОст у нас уже есть, остается придумать как посчитать КоличествоНачОст * Вес (при обходе группировок делать это тяжко, принимая во внимание что у нас выводятся итоги по группам, намного проще было бы, если бы процедура умножения производилась в самом запросе.

Если сделать что-то вроде:

Код
|Функция ВесНачОст = Сумма(Запрос.КоличествоНачОст * Вес);


То результат получится. Но к сожалению функция Сумма округляет результат до целых, отбрасывая дробную часть. Что непреемлемо. Несколько простых примеров:

Код
|Функция ПростоСумма = Сумма(9.9);


при одном "суммировании" внутри запроса выдаст 10 вместо 9.9, однако
Код
Функция ПростоСумма = Сумма(9.9 + ПеременнаяЗапроса - ПеременнаяЗапроса);


Выдаст 9.9 с точностью, которую имеет ПеременнаяЗапроса. Т.е. если у переменной запроса точность знаков после запятой 4, то Сумма выдаст 9.9000.

Итого для подсчета начального остатка веса получаем следующую функцию:

Код
|Функция ВесНачОст = Сумма(Запрос.КоличествоНачОст * Вес + Количество - Количество);


Не так красиво на первый взгляд - но зато работает, и выдает корректные результаты по группам.


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 23.6.2025, 21:20
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования