1С 77 формат

  • автор:

Число — это один из примитивных типов данных существующих в 1С. Числа в 1С:Предприятии встречаются абсолютно везде и всюду. Следовательно важность знания функций для работы с числами трудно переоценить. К рассмотрению этих функций и приступим.

В начале скажем, что максимальная разрядность для числа равняется 38-ми знакам, при этом для целой части выделено 32 символа.

При этом в конфигураторе можно указать длину числа в 64 символа (при точности в 32 символа), но это вероятно какая-то ошибка, так как при попытке обновить конфигурацию Вы увидите нечто подобное:

Ошибка конфигуратора

С числами в 1С можно выполнять все стандартные арифметические операции:

  • “+” — сложение;
  • “-” — вычитание;
  • “*” — умножение;
  • “/” — деление;
  • “%” — остаток от деления.

Функции для работы с числами в 1С 8.2 и 8.3

Окр

Функция Окр(x, y, z) позволяет округлить число “x” в зависимости от заданной разрядности “y” и режима округления “z”.

Цел

Функция Цел(x) возвращает целую часть переданного в параметре числа “x”.

1 2 3 4 &НаКлиенте Процедура ФункцияЦел(Команда) Сообщить(Цел(123.15)); //123 КонецПроцедуры

Число

Функция Число(x) пытается преобразовать полученное значение “x” в значение типа Число. Такому преобразованию поддаются значения типа Булево и типа Строка (строка должна состоять только из цифр), во всех остальных случаях генерируется ошибка.

Формат

Функция Формат(x, y) позволяет получить заданным, при помощи форматной строки “y” образом форматированное строковое представление числа “x”. Подробнее об этой функции в соответствующей статье.

Число прописью

Функция ЧислоПрописью(x, y, z) формирует представление числа “x” прописью исходя из форматной строки “y” и параметров предмета исчисления “z”. Подробнее об этой функции в соответствующей статье.

Мин

Функция Мин(x1…xn) возвращает минимальное из переданных ей значений “x1…xn”, работает не только с числами.

Макс

Функция Макс(x1…xn) возвращает максимальное из переданных ей значений “x1…xn”, как и предыдущая функция работает не только с числами.

Вычислить

Функция Вычислить(x) позволяет вычислить математические и логические выражения “x”, а также операции конкатенации.

Модуль

В 1С пока нет отдельной функции для получения модуля числа, но эта проблема решается просто:

1 2 3 4 &НаКлиенте Функция МодульЧисла(Число) Возврат ?(Число<0, -Число, Число); КонецФункции

Использование этой функции:

Sqrt

Функция Sqrt(x) просто возвращает квадратный корень переданного ей числа “x”.

1 2 3 4 &НаКлиенте Процедура ФункцияSqrt(Команда) Сообщить(Sqrt(25)); //5 КонецПроцедуры

Pow

Функция Pow(x, y) возводить число “x” в степень “y” и возвращает результат.

1 2 3 4 &НаКлиенте Процедура ФункцияPow(Команда) Сообщить(Pow(5, 2)); //25 КонецПроцедуры

Exp

Функция Exp(x) возвращает результат возведения числа Эйлера в указанную степень “x”.

1 2 3 4 &НаКлиенте Процедура ТестЧисла(Команда) Сообщить(Exp(2)); //~7.389 КонецПроцедуры

Логарифм

Функции Log(x) и Log10(x) возвращают натуральный и десятичный логарифм числа “x” соответственно.

1 2 3 4 5 &НаКлиенте Процедура ТестЧисла(Команда) Сообщить(Log(7.389)); //~1.99 Сообщить(Log10(1000)); //3 КонецПроцедуры

Тригонометрия

Набор функций которые вычисляют соответствующие тригонометрические функции, результат исчисляется в радианах:

  • Sin(x) — синус;
  • Cos(x) — косинус;
  • Tan(x) — тангенс;
  • ASin(x) — арксинус;
  • ACos(x) — арккосинус;
  • ATan(x) — арктангенс.

Случайные числа

Для получения случайных чисел в 1С существует даже не функция, а целый объект — генератор случайных чисел, пусть даже этот объект содержит всего один метод — СлучайноеЧисло(x, y), который возвращает случайное число в диапазоне от “x” до “y”.

Ввести число

Функция ВвестиЧисло(x, y, z, v) позволяет вывести форму ввода числа, которое записывается в переменную “x”, в параметрах можно указать подсказку “y”, длину числа “z” и точность “v”.

1 2 3 4 5 &НаКлиенте Процедура ФункцияВводаЧисла(Команда) Ч = 0; ВвестиЧисло(Ч, «Введите число», 10, 2); КонецПроцедуры

В результате получится что-то вроде этого:

Окно ввода числа

Типовые задачи при работе с числами в 1С 8.2 и 8.3

Дробная часть числа

Если для извлечения целой части числа в 1С существует специальная функция, то для того чтобы получить дробную часть придется использовать арифметические операции:

Строку в число

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

Ошибка преобразования к типу Число

Чтобы избежать этого необходимо использовать конструкцию вида:

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Преобразовать число в строку 1С специально обычно не требуется, так как при попытке записать в реквизит типа «строка» значение типа «число», преобразование будет выполнено 1С самостоятельно.

Если Вы имеете переменную со значением типа «число» и приравняете ее со значением типа «строка», то значение конвертировано автоматически не будет — так как в 1С нет строгой типизации переменных.

Также преобразовать число в строку 1С требуется при составлении сложной строки, например:
Строка = «Текущий процент выполнения » + чПроцент;
В некоторых случаях 1С будет ругаться при попытке складывать строку 1С и число 1С (в других случаях, когда это возможно, число будет преобразовано автоматически).

Преобразовать число в строку 1С можно с помощью функции Строка() или СокрЛП(), а также с помощью Формат().

Последний способ иногда предпочтительнее. А почему?

Функция 1С Строка(«Число») позволяет преобразовать число в строку 1С.

В отличии от аналога Число(), ошибки преобразования быть не может, так как преобразовать число в строку 1С можно всегда (в отличии от обратной ситуации).

Например:

  • Выполняем функцию 1С Строка(22); или функцию 1С СокрЛП(22)
  • 1С возвращает «22»

Платформа 1С производит автоматическое форматирование чисел при преобразовании в строку согласно локализации. Это приводит, например, к таким ситуациям:
стр = Строка(2532);
//стр = «2 532» — лишний пробел

Это может быть неудобно, если позже придется преобразовать число из строкового представления обратно в числовое. В этом случае удобно использовать функцию Формат().

Например:

  • Выполняем функцию 1С Формат(2532, «ЧГ=100»)
  • 1С возвращает «2532»

Преобразовать число в строку без разделителей групп в 1С

При приведении значения типа Число к типу Строка, могут появляться символы разделяющие группы разрядов. При стандартных настройках используется символ «неразрывный пробел».

Попытка
Результат = Строка(1000000); // 1 000 000
Исключение
Сообщить(«Не удалось привести число к строке»);
КонецПопытки;
Используя настройки информационной базы можно отключить разделитель групп разрядов, для всей информационной базы. Так же есть возможность программно заменить разделяющий символ на пустую строку или отформатировать функцией «Формат».

Отключить разделитель групп разрядов для всей конфигурации

В «Региональных установках информационной базы» задаются глобальные настройки, которые влияют на всю информационную базу. В установках можно определить параметры группировки разрядов числа. Данные настройки доступны в режиме конфигуратора.
Окно установок открывается через главное меню Администрирование->Региональные установки информационной базы

Убрать разделитель групп разрядов функцией Формат

Функция «Формат»с параметром «ЧГ=0» убирает разделители групп числа.
Результат = Формат(Число,»ЧГ=0″);

Заменить разделитель групп разрядов функцией СтрЗаменить

С помощью функции «СтрЗаменить», заменяется «неразрывный пробельный символ» на пустую строку.
Результат = СтрЗаменить(Число, Символы.НПП, «»);

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

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