Розрядність результатів виразів і агрегатних функцій у мові запитів
Під час використання в запитах операцій і функцій над даними, до визначення яких входять специфікації довжини ( Рядок , Число ) і точності ( Число ), буває необхідно враховувати правила обчислення довжини й точності результатів. Цей розділ містить опис відповідних правил.Операції над рядками. Операції над числами. "+" (додавання), "-" (віднімання). "*" (множення). "/" (ділення). СУМА. МІНІМУМ, МАКСИМУМ, СЕРЕДНЄ. КІЛЬКІСТЬ, РІК, КВАРТАЛ, МІСЯЦЬ, ДЕНЬРОКУ, ДЕНЬ, ТИЖДЕНЬ, ДЕНЬТИЖНЯ, ГОДИНА, ХВИЛИНА, СЕКУНДА, РІЗНИЦЯДАТ
"+" (додавання), "-" (віднімання)
Під час використання в запитах операцій і функцій над даними, до визначення яких входять специфікації довжини (Рядок, Число) і точності (Число), буває необхідно враховувати правила обчислення довжини й точності результатів. Цей розділ містить опис відповідних правил.
Операції над рядками
Опис даних типу Рядок може містити такі додаткові специфікації: довжина (максимальна кількість символів), допустима довжина (фіксована або змінна), необмежена довжина (Істина або Хибність). У таблиці наведено правила обчислення додаткових специфікацій результатів функцій залежно від додаткових специфікацій їхніх рядкових операндів.
|
Функція |
Необмежена довжина |
||
|---|---|---|---|
|
Істина |
Хибність, n - довжина |
||
|
Фіксована |
Змінна |
||
| ПІДРЯДОК(Рядок, m, k) | Необмежена довжина | Довжина k, змінна | Довжина k, змінна |
| МІНІМУМ(Рядок) | Необмежена довжина | Довжина n, фіксована | Довжина n, змінна |
| МАКСИМУМ(Рядок) | Необмежена довжина | Довжина n, фіксована | Довжина n, змінна |
У наступній таблиці наведено правила визначення додаткових специфікацій результату операції "+" (конкатенація рядків), що має 2 рядкові операнди.
|
Операнд 1 |
Операнд 2 |
|||
|---|---|---|---|---|
|
Необмежена довжина |
Довжина m |
|||
| Фіксована |
Змінна |
|||
| Необмежена довжина | Необмежена довжина | Необмежена довжина | Необмежена довжина | |
| Довжина n | Фіксована | Необмежена довжина | Довжина n + m фіксована | Довжина n + m змінна |
| Змінна | Необмежена довжина | Довжина n + m змінна | Довжина n + m змінна | |
Операції над числами
Виконуючи різні перетворення числових даних, необхідно враховувати, що максимальна кількість цифр, яку може містити число (його ціла та дробова частина разом), дорівнює 38 цифрам. 1С:Підприємство використовує десяткові числа з фіксованою точкою. Це означає, наприклад, що число 34.28 містить 4 цифри, число 0.000000001 містить 9 цифр (незначущий 0 перед точкою за цифру не вважається), а число 3200000000 містить 10 цифр. Розрядність результатів різних операцій обчислюється так, щоб за можливості виключити арифметичні переповнення і водночас максимально зберегти точність значень. Під час розроблення конфігурацій вибір розрядності полів об'єктів метаданих має визначатися можливою розрядністю даних, що зберігаються в них, і не повинен враховувати можливе збільшення розрядності після виконання арифметичних операцій і функцій.
"+" (додавання), "-" (віднімання)
Операції додавання та віднімання в мові запитів завжди виконуються точно. Для цього довжина дробової частини результату визначається як максимальна з довжин дробових частин операндів. Довжина цілої частини результату — як максимальна з довжин цілих частин операндів, збільшена на 1. Якщо при цьому загальна кількість цифр цілої та дробової частин перевищить 38, то її буде зведено до 38 за рахунок зменшення кількості цифр дробової частини, але не менше ніж до 10.
"*" (множення)
Операції множення виконуються точно в тому разі, якщо хоча б один її операнд є цілим числом. Довжина дробової частини результату визначається як найбільша з довжин дробових частин операндів, але не менше 10 цифр. Довжина цілої частини результату обчислюється як сума довжин цілих частин операндів. Якщо при цьому загальна кількість цифр цілої та дробової частин перевищить 38, то її буде зведено до 38.
"/" (ділення)
Операція ділення виконується точно, лише якщо обидва операнди є цілими числами, і перший операнд ділиться на другий без остачі. Довжина дробової частини результату визначається як максимальна з довжин дробових частин операндів, але не менше 10 цифр. Довжина цілої частини результату дорівнює сумі довжин цілої частини діленого та дробової частини дільника. Якщо при цьому загальна кількість цифр цілої та дробової частин перевищить 38, то її буде зведено до 38 за рахунок зменшення кількості цифр дробової частини, але не менше ніж до 10.
СУМА
Агрегатна функція СУМА обчислюється за можливості точно. Кількість цифр дробової частини результату дорівнює кількості цифр дробової частини операнда. Кількість цифр цілої частини збільшується на 7 цифр. Якщо при цьому загальна кількість цифр цілої та дробової частин перевищить 38, то її буде зведено до 38 за рахунок зменшення кількості цифр дробової частини, але не менше ніж до 10.
МІНІМУМ, МАКСИМУМ, СЕРЕДНЄ
Результат функцій МІНІМУМ, МАКСИМУМ, СЕРЕДНЄ має таку саму кількість цифр у цілих і дробових частинах, як і їхній операнд.
КІЛЬКІСТЬ, РІК, КВАРТАЛ, МІСЯЦЬ, ДЕНЬРОКУ, ДЕНЬ, ТИЖДЕНЬ, ДЕНЬТИЖНЯ, ГОДИНА, ХВИЛИНА, СЕКУНДА, РІЗНИЦЯДАТ
Перелічені функції мають числовий результат із 10 цифрами в цілій частині. Дробова частина відсутня.
ПРИМІТКИ
|