Округление в запросе при помощи ВЫРАЗИТЬ()
Как я понял, мне нужно указывать константы, переменные тут не подходят.
Понимаю что можно сделать через ВЫБОР КОГДА ТОГДА, но в таком случае получится очень громоздко и некрасиво, поэтому прошу помощи у вас.
Уважаемые знатоки, подскажите пожалуйста ещё какие-нибудь варианты округления в запросе..
(1)Не хотелось бы конечно, но, в любом случае спасибо, буду иметь ввиду..
Ну и тут пример я привёл, что указываю параметр, на самом же деле, я указываю поле ДлинаДробнойЧасти из ВТПараметрыРасчета, в которых для каждого контрагента указывается до какого знака округлять расчеты по нему.. Поэтому параметром тут не передать на самом деле.. Я прост думал может быть есть ещё какие-нибудь методы помимо Выразить(), о которых я не знаю.
(2)Ну я математику не проверял конечно.. в статьях в интернете пишут что округляет, верю на слово, но всё равно спасибо
ВЫБРАТЬ
вз2.Номенклатура,
ВЫБОР
КОГДА &Разряд = 1
ТОГДА вз2.Разряд1
КОГДА &Разряд = 2
ТОГДА вз2.Разряд2
КОГДА &Разряд = 3
ТОГДА вз2.Разряд3
КОГДА &Разряд = 4
ТОГДА вз2.Разряд4
КОГДА &Разряд = 5
ТОГДА вз2.Разряд5
ИНАЧЕ вз2.Разряд6
КОНЕЦ КАК Цена
ИЗ
(ВЫБРАТЬ
вз1.Номенклатура КАК Номенклатура,
ВЫРАЗИТЬ(вз1.Сумма / вз1.Количество КАК ЧИСЛО(15, 1)) КАК Разряд1,
ВЫРАЗИТЬ(вз1.Сумма / вз1.Количество КАК ЧИСЛО(15, 2)) КАК Разряд2,
ВЫРАЗИТЬ(вз1.Сумма / вз1.Количество КАК ЧИСЛО(15, 3)) КАК Разряд3,
ВЫРАЗИТЬ(вз1.Сумма / вз1.Количество КАК ЧИСЛО(15, 4)) КАК Разряд4,
ВЫРАЗИТЬ(вз1.Сумма / вз1.Количество КАК ЧИСЛО(15, 5)) КАК Разряд5,
ВЫРАЗИТЬ(вз1.Сумма / вз1.Количество КАК ЧИСЛО(15, 6)) КАК Разряд6
ИЗ
(ВЫБРАТЬ
АвансовыйОтчетТовары.Номенклатура КАК Номенклатура,
СУММА(АвансовыйОтчетТовары.Количество) КАК Количество,
СУММА(АвансовыйОтчетТовары.Сумма) КАК Сумма
ИЗ
Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
СГРУППИРОВАТЬ ПО
АвансовыйОтчетТовары.Номенклатура) КАК вз1) КАК вз2
(3) Если у тебя параметр, от которого зависит округление, находится в той же строке текущего запроса, то в (4) тебе отличный рецепт дали. Вместо числа знаков после запятой хранишь 10 в нужной степени и вычисляшь примерно так:
ВЫРАЗИТЬ(МояТаблица.МоёЧисло * ВТПараметрыРасчета.СтепеньОкругления + 0.5 КАК ЧИСЛО(22, 0)) / ВТПараметрыРасчета.СтепеньОкругления
где в ВТПараметрыРасчета.СтепеньОкругления у тебя будет, например, 1000 для 3х знаков после запятой
Еще один «привет» из мира 1с — новые возможности языка запроса, которые нужно знать всем 1с-никам
Под конец года, я решил разместить еще одну небольшую статейку у вас на ресурсе, где рассмотрю некоторые относительно новые возможности языка запросов 1с. Надеюсь, что данная статья воспримется положительно.
Введение
Всем привет! В данном материале, я решил, что немного отойду от своего основного профиля — практической разработке и изучения возможностей библиотеке стандартных подсистем (БСП) и затрону работу программиста с языком запросов 1с.
Думаю, что материал данной статьи будет полезен всем разработчикам и программистам, а также все желающим, кто хочет разобраться в элементарных запросах платформы и приобщиться к касте 1с-ников). Так же данный материал подойдет как обычная «напоминалка» для программиста
Статья содержит только практические примеры использования вот этих функций языка запросов 1С — вот они:
Для реализации данных примеров можно использовать типовой конструктор запросов или типовую консоль (из предприятия), 1С: Платформу 8.3.20 и мою любимую конфигурацию «Библиотека стандартных подсистем 3.1» (3.1.7.137), режим совместимости которой я поднял до 8.3.20 (без использования). Условно, я разбил эти функции на 11 групп (по одной или несколько функций близких по смыслу).
Примеры
1.Строка(String):
2. Sin, Cos, Tan, ASin, ACos, ATan:
3. Exp, Log, Log10, Pow и Sqrt:
4.Окр(Round) и Цел(Int):
5. ДлинаСтроки(StringLength):
6. СокрЛ(TrimL), СокрП(TrimR) и СокрЛП(TrimAll):
7. Прав(Right) и Лев(Left):
8. СтрНайти(StrFind):
9. ВРег(Upper) и НРег(Lower):
10. СтрЗаменить(StrReplace):
11. РазмерХранимыхДанных(StoredDataSize):
Так, ну вроде, все проверено — все работает. При строгой типизации — ошибок в применении не будет.
Выводы статьи
Спасибо за прочтение. В материале представлены практические примеры применения новых функций языка запросов 1с. Эти функции характерны для платформы 1с предприятия версии от 8.3.20. Надеюсь, что вам понравилась данная статья и вы на один шаг приблизились к миру 1С.
Округление в запросе
Для округления чисел встроенный язык 1С предусматривает использование функции ОКР в 1С. Ее можно использовать при обработке результата запроса в процедурах модулей объектов конфигурации. Однако, в языке запросов 1С Предприятие также есть возможность округлить результат вычисления непосредственно при помощи формулы в произвольном выражении. Для этого предусмотрена функция ВЫРАЗИТЬ(<Выражение> КАК <Тип>).
2. Синтаксис описание функции ВЫРАЗИТЬ
Выражение – описание преобразуемого объекта.
Тип – можно указывать строковое описание типа, либо значения ЧИСЛО или СТРОКА.
Для типа ЧИСЛО в 1С необходимо указывать формат, к которому нужно привести выражение:
ЧИСЛО( <Количество знаков целой части>, <Количество знаков дробной части> )
Для типа СТРОКА в 1С нужно указать длину строки:
В нашем случае параметр <Выражение> должен обязательно иметь числовой тип. Параметр <Тип> задается как ЧИСЛО.
3. Округление в запросе 1С при помощи функции ВЫРАЗИТЬ
Для округления числа до целого указываем в произвольном выражении:
ВЫРАЗИТЬ(&ОкругляемоеЧисло КАК ЧИСЛО(15.0)), где
15 – длина целой части,
0 – количество знаков дробной части
Результат вычисления в запросе будет следующий:
При &ОкругляемоеЧисло = 123.456 результат = 123
При &ОкругляемоеЧисло = 123.5 результат = 124
Таким образом, результат выражения будет представлять собой округление числа до целого по правилам округления в запросе 1С.
Если нужно округлить до определенного количества знаков после запятой в 1С, задаем после точки количество знаков:
ВЫРАЗИТЬ(123.456 КАК ЧИСЛО(15.1)) = 123.5
4. Исключение для значений типа NULL
Если в функцию для округления в запросе 1С передается какой-либо реквизит объекта и в таблице значений для данного объекта этот реквизит не заполнен (т.е. в таблице БД имеет значение NULL), то в результате вычисления по формуле, приведенной выше мы получим нечисловое значение типа NULL:
ВЫРАЗИТЬ(NULL КАК ЧИСЛО(15.1)) = NULL
Для того, чтобы избежать в таблицах результата запроса строк с таким значением, нужно использовать функцию обхода пустых значений в 1С 8.3, принудительно приравнивая пустые значения нулю:
ЕСТЬNULL(ВЫРАЗИТЬ(NULL КАК ЧИСЛО(15.1)), 0) = 0
5. Как округлить в запросе 1С число до целых сотен
Выше мы рассмотрели возможность округления в запросе 1С числа до целых значений.
Но как быть если нужно округлить до целых сотен, десятков или, например, тысяч? Напрямую функция ВЫРАЗИТЬ в 1С 8.3 такой возможности не предоставляет. В этом случае нужно при помощи функции ВЫРАЗИТЬ в 1С 8.3 округлить до целого результат от деления округляемого числа на нужную кратность (100, 10, 1000 и т.д.) и затем умножить полученное число на ту же кратность.
Как округлить число в запросе 1с?
Очень часто в запросах 1С 8.3 необходимо округлить значение «на лету», непосредственно в запросе. Сделать это очень просто.
Как округлить число в 1С?
В системе 1С есть специальная функция, которая помогает округлить число в большую сторону – это «ОкруглитьВбольшуюСторону()». Также можно рассмотреть функцию, которая совершает обычное округление числа в большую сторону, и проследить, как она отличается от «ОкруглитьВбольшуюСторону()». Это – функция Окр().
Как сделать округление в 1С?
Ответ: Для того чтобы настроить правила округления расчетов заработной платы в конфигурации «1С:Бухгалтерия для Казахстана» ред 3.0 предусмотрен регистр сведений «Порядок округления результатов расчета зарплаты», который находится в меню «Зарплата – Справочники и настройки».
Как в 1С сделать округление в меньшую сторону?
Значение по умолчанию: 0 (необязательный) Тип: РежимОкругления. Определяет режим округления. Помимо системного перечисления допускается использование числового параметра: 0 — если при округлении 1.5 = 1; 1 — если при округлении 1.5 = 2. т.
Как в 1С сделать 4 знака после запятой в цене?
Открываете конфигуратор -> Конфигурация -> Окно конфигурации, после чего слева откроется дерево метаданных, раскрываете ветку «Документы» -> «Налоговая накладная» -> «Табличные части» -> «Товары», правой кнопкой мыши по реквизиту «Количество» и в графе «Точность» выставляете нужное количество знаков.
Как возвести число в степень в 1с?
Функция 1С Pow(Число, Степень) возводит число в степени. 1С POW – число в степеньВыполняем функцию 1С Pow(2, 2)1С возвращает 4.Выполняем функцию 1С Pow(3, 5)1С возвращает 243.
Как округлить число в Скд?
Делается это в конструкторе СКД на вкладке «Наборы данных». Для каждого поля отчёта можно настроить «Оформление». Нужно выбрать пункт «Формат» и задать точность числа. Для вычисляемых полей эта операция проделывается на вкладке «Вычисляемые поля».
Как в 1с сделать 3 знака после запятой?
Заходишь в конфигуратор, открываешь конфигурацию, находишь там справочник «Комплектация» и у его реквизита «Количество» изменяешь точность: с 3-х на 4. Так понятнее? ) программа будет считать как обычно — округлять до 3-х знаков после запятой.