Как округлить в запросе 1с
Перейти к содержимому

Как округлить в запросе 1с

  • автор:

Округление в запросе при помощи ВЫРАЗИТЬ()

Как я понял, мне нужно указывать константы, переменные тут не подходят.
Понимаю что можно сделать через ВЫБОР КОГДА ТОГДА, но в таком случае получится очень громоздко и некрасиво, поэтому прошу помощи у вас.
Уважаемые знатоки, подскажите пожалуйста ещё какие-нибудь варианты округления в запросе..

(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-х знаков после запятой.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *