При использовании в запросах операций и функций над данными, в определение которых входят спецификации длины ( Строка , Число ) и точности ( Число ), бывает необходимо учитывать правила вычисления длины и точности результатов. Этот раздел содержит описание соответствующих правил.

Операции над строками

Описание данных типа Строка может включать следующие дополнительные спецификации: длина (максимальное количество символов), допустимая длина (фиксированная или переменная), неограниченная длина ( Истина или Ложь ). В таблице приведены правила вычисления дополнительных спецификаций результатов функций в зависимости от дополнительных спецификаций их строковых операндов.

ПОДСТРОКА(Строка, m, k)Неограниченная длинаДлина k, переменнаяДлина k, переменнаяМИНИМУМ(Строка)Неограниченная длинаДлина n, фиксированнаяДлина n, переменнаяМАКСИМУМ(Строка)Неограниченная длинаДлина n, фиксированнаяДлина n, переменная

В следующей таблице приведены правила определения дополнительных спецификаций результата операции "+" (конкатенация строк), имеющей 2 строковых операнда.

Неограниченная длинаНеограниченная длинаНеограниченная длинаНеограниченная длинаДлина nФиксированнаяНеограниченная длинаДлина n + m фиксированнаяДлина n + m переменнаяПеременнаяНеограниченная длинаДлина n + m переменнаяДлина n + m переменная

Операции над числами

Выполняя различные преобразования числовых данных, необходимо учитывать, что максимальное количество цифр, которое может содержать число (его целая и дробная часть вместе), равно 38 цифр. 1С:Предприятие использует десятичные числа с фиксированной точкой. Это значит, например, что число 34.28 содержит 4 цифры, число 0.00000001 содержит 8 цифр (незначащий 0 перед точкой за цифру не считается), а число 3200000000 содержит 10 цифр. Разрядность результатов различных операций вычисляется так, чтобы по возможности исключить арифметические переполнения, и в то же время максимально сохранить точность значений. При разработке конфигураций выбор разрядности полей объектов метаданных должен определяться возможной разрядностью хранимых в них данных и не должен учитывать возможное увеличение разрядности после выполнения арифметических операций и функций.

"+" (сложение), "-" (вычитание)

Операции сложения и вычитания в языке запросов всегда выполняются точно. Для этого длина дробной части результата определяется как максимальная из длин дробных частей операндов. Длина целой части результата как максимальная из длин целых частей операндов, увеличенная на 1. Если при этом общее количество цифр целой и дробной части превысит 38, то оно будет приведено к 38 за счет уменьшения числа цифр дробной части, но не менее, чем до 8.

"*" (умножение)

Операции умножения выполняется точно в том случае, если хотя бы один ее операнд является целым числом. Длина дробной части результата определяется как наибольшая из длин дробных частей операндов, но не менее 8 цифр. Длина целой части результата вычисляется как сумма длин целых частей операндов. Если при этом общее количество цифр целой и дробной части превысит 38, то оно будет приведено к 38.

При умножении двух чисел разрядность результата вычисляется следующим образом: количество разрядов целой части содержит сумму количеств разрядов целых частей операндов; количество разрядов дробной части содержит сумму количеств разрядов дробных частей операндов. Если суммарное количество разрядов (целой и дробной части) результата превышает максимально допустимое (38 — для всех СУБД кроме DB2, для DB2 — 31), то происходит балансировка точности. В этом случае операнды приводятся к разрядности, позволяющей сохранить необходимую точность операции. Например, при умножении полей (не констант) ЧИСЛО(17,4) и ЧИСЛО(27,4) платформа приведет операнды к типу ЧИСЛО(15,4) и ЧИСЛО(22,4), что в результате даст тип ЧИСЛО(37,8), не превышающий максимальное количество разрядов в СУБД. Однако, если какой-либо из операндов не поместится в соответствующую разрядность, то будет ошибка СУБД во время исполнения запроса

"/" (деление)

Операция деления выполняется точно только если оба операнда являются целыми числами, и первый операнд делится на второй без остатка. Длина дробной части результата определяется как максимальная из длин дробных частей операндов, но не менее 8 цифр. Длина целой части результата равна сумме длин целой части делимого и дробной части делителя. Если при этом общее количество цифр целой и дробной части превысит 38, то оно будет приведено к 38 за счет уменьшения числа цифр дробной части, но не менее, чем до 8.

СУММА

Агрегатная функция СУММА вычисляется по возможности точно. Количество цифр дробной части результата равно количеству цифр дробной части операнда. Количество цифр целой части увеличивается на 7 цифр. Если при этом общее количество цифр целой и дробной части превысит 38, то оно будет приведено к 38 за счет уменьшения числа цифр дробной части, но не менее, чем до 8.

МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ

Результат функций МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ имеет какое же количество цифр в целой и дробной частях, как и их операнд.

КОЛИЧЕСТВО, ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬГОДА, ДЕНЬ, НЕДЕЛЯ, ДЕНЬНЕДЕЛИ, ЧАС, МИНУТА, СЕКУНДА, РАЗНОСТЬДАТ

Перечисленные функции имеют числовой результат с 10 цифрами в целой части. Дробная часть отсутствует.

Проблемные ситуации

Если при работе запроса возникает ошибка СУБД, следует изменить запрос, приводящий к ошибке: с помощью операции ВЫРАЗИТЬ можно привести разрядность операндов к такому виду, чтобы в результате расчета разрядности умножения платформа 1С:Предприятие не проводила автоматическую балансировку точности.

Например: привести разрядность операндов к типам ЧИСЛО(17,4) и ЧИСЛО(20,4) — в этом случае результатом умножения будет разрядность ЧИСЛО(37,8), что не превышает максимально допустимую разрядность для используемой СУБД.

Подскажите пожалуйста, как в 1С увеличить разрядность цены до 5-ти знаков после запятой?

Это надо для выставления счета по электроэнергии. Например, цена 4,34611.

Оцените, пожалуйста, данный вопрос:

Вам будет интересно

Здравствуйте! Тоже интересовал этот вопрос (тоже проблема именно с ценами за киловатт/час), очень интересное решение!
Ирина, спасибо Вам огромное за идею (перевести всё в ватты)!!

Ирина Шаврова Profbuh8.ru Янв 31 2017 — 14:39

Ой, нет… Получается. если перевести в ватты, то цена еще меньше станет(( то есть разрядность увеличится, а не уменьшится!! Значит, нужно из киловатт переводить в мегаватты, чтобы цена стала БОЛЬШЕ и разрядность уменьшилась. Но тогда может не хватить разрядности для количества(( Эх, придется считать вручную на калькуляторе…

Ирина Шаврова Profbuh8.ru Янв 31 2017 — 15:41

Обычно, под количество отводится стандартно 15 знаков и 3 после запятой. т.е. 12 знаков в целую часть – этого точно не хватит?

Дело в том, что не хватит тех самых ТРЕХ знаков после запятой (если разделим количество на 1000 для перевода в мегаватты). То есть в киловаттах не хватает разрядности в цене, а в мегаваттах – в количестве. Жаль, но такова специфика работы. Спасибо, что откликнулись! Наверное будем решать ситуацию с помощью внешней печатной формы, в которой будет отображаться нужная цена.

Ирина Шаврова Profbuh8.ru Янв 31 2017 — 20:08

Да, тогда так. Есть кому заказать?

Да, есть, спасибо!

Ирина Шаврова Profbuh8.ru Фев 3 2017 — 18:25

Отлично.

Здравствуйте! Подскажите пожалуйста, как в БУХ3.0 напечатать платеж.поручение с Biprint? Я очень давно не сдавала п/п вручную в банк( все время через банк-клиент), а сейчас понадобилось- у ИП нет банка-Клиент. Или сейчас печать штрих кода для банков не нужна? Программа Biprint установлена.Спасибо.

Ирина Шаврова Profbuh8.ru Дек 28 2016 — 17:53

Добрый вечер, Наталья!
К сожалению, с Biprint мы не работаем. Но посмотрите, я нашла в интернете инструкцию, может быть, она Вам поможет: http://www.bankofkazan.ru/offices/BiPrint.pdf

Ирина Шаврова Profbuh8.ru Дек 6 2016 — 14:10

Добрый день!
Вам придется снимать запрет редактирования в конфигурации и выставлять разрядность 5 в реквизите ЦЕНА документа Реализации (акт, накладная), например. Тогда будут сложности с обновлением.

Или использовать не КВатт/час, а Ватт/час в единицах изменения. Тогда разрядности хватит

подскажите, пожалуйста, как можно увеличить разрядность числа в документе реализация — услуги (акт) в колонке «количество» и «цена», например, количество 27,46429 Гкал, цена 1500,12345. Так же и в документе поступление — услуги (акт).

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Все комментарии (4)

Добрый день, Елена.
Посмотрите обсуждение подобного вопроса здесь: Как увеличит количество знаков после запятой в Цене? Останутся вопросы пишите.

Спасибо большое, все получилось.

Приложение

Я извиняюсь, но получилось только изменить разрядность в форме, а при создании документа в цене не дает поставить после запятой 5 знаков.

Добрый день, Елена.
Изменить количество знаков после запятой при вводе можно только в режиме Конфигуратор.

Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8.
Оформить заявку от имени Юр. или Физ. лица вы можете здесь >>

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

Большое спасибо Марине Александровне! Всё очень актуально, четко и главное своевременно (про новые ФСБУ совсем упустила из виду).

База ответов по учёту в 1С
© ООО «ПРОФБУХ» 2011-2019 г.,
ОГРН 1117746700686

При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов.

Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт