Нестандартное округление в тексте запроса 8.1
Было дано задание, получать баллы, расчет которых шел по формуле СуммаПродажи / 1000. И округлять в большую сторону, если остаток больше 700р.
- Описание
- Подробнее
Описание
Данная статья не претендует на какое-то великое открытие, просто хочу поделится информацией. Так как в запросе 1с достаточно скудные средства обработки данных, пришлось немного поломать голову как реализовать нестандартный механизм округления.
Суть задачи:
Требуется выводить отчет по продажам контрагентов (УТ 10.3 Регистр.Продажи) с пересчетом суммы продаж в баллы. Формула расчета баллов проста — Сумма / 1000.
При этом округление до целого должно происходить не по обычной схеме 1.5, а по схеме 1.7. То есть имеем две суммы:
35645 руб = 35 баллов
35796 руб = 36 баллов
В результате был создан отчет с помощью построителя.
Текст запроса:
ВЫБРАТЬ
Таблица.Контрагент КАК Контрагент,
Таблица.СуммаПродаж,
Таблица.Баллы КАК ПредварительныеБаллы,
ВЫРАЗИТЬ(Таблица.Баллы - 0.2 КАК ЧИСЛО(10, 0)) КАК Баллы
ИЗ
(ВЫБРАТЬ
ПродажиОбороты.Контрагент КАК Контрагент,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК СуммаПродаж,
СУММА(ПродажиОбороты.СтоимостьОборот / 1000) КАК Баллы
ИЗ
РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиОбороты
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Контрагент) КАК Таблица
УПОРЯДОЧИТЬ ПО
Контрагент
АВТОУПОРЯДОЧИВАНИЕ