К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как в 1С поставить степень числа

Разбираем, как в 1С поставить степень числа: функции встроенного языка Pow и Exp, надстрочные символы в тексте, формулы в отчётах и типичные ошибки.

Вопрос о том, как в 1С поставить степень, встречается в двух разных ситуациях, и их важно сразу различать. Первая — вычислительная: нужно возвести число в степень в коде встроенного языка, например посчитать сложные проценты, дисконтирование или индексацию. Вторая — оформительская: нужно показать степень как надстрочный символ в тексте документа, наименовании товара или печатной форме, например «м²» или «10⁻³».

Для каждой задачи подход свой. В вычислениях используется функция встроенного языка Pow() и сопутствующие математические функции. Для отображения надстрочных знаков применяются символы Юникода, поскольку стандартные текстовые поля 1С не поддерживают форматирование отдельных символов. Ниже разобраны оба сценария с конкретными примерами кода, ограничениями и типичными ошибками.

Вычисление степени функцией Pow во встроенном языке

Основной инструмент — глобальная функция Pow(Основание, Показатель). Первый параметр — число, которое возводится в степень, второй — показатель степени. Оба параметра могут быть целыми или дробными, положительными или отрицательными. Функция возвращает число, которое дальше можно использовать в расчётах, округлять или выводить пользователю.

Результат = Pow(2, 10);        // 1024

Проценты = Pow(1 + Ставка/100, СрокЛет);

Дисконт = Сумма / Pow(1 + Ставка, Периодов);

Типичное применение — финансовые расчёты: сложные проценты по вкладам и кредитам, дисконтирование денежных потоков, индексация цен за несколько периодов. В таких формулах показатель степени часто равен количеству лет или месяцев, а основание — единице плюс ставка. Важно следить за размерностью: если ставка годовая, а периоды месячные, ставку нужно предварительно пересчитать.

Отдельный случай — отрицательный показатель. Выражение Pow(2, -3) вернёт 0,125, то есть единицу, делённую на два в кубе. Это удобно для обратных величин, но помните: при нулевом основании и отрицательном показателе возникнет ошибка деления на ноль, поэтому перед вычислением стоит проверять входные данные.

bsl
Функция СложныеПроценты(Сумма, СтавкаГодовых, Лет)
	Возврат Окр(Сумма * Pow(1 + СтавкаГодовых / 100, Лет), 2);
КонецФункции

Квадрат, куб и квадратный корень — частные случаи

Для возведения в квадрат или куб функция Pow не обязательна: простое умножение Х * Х читается легче и работает быстрее. В коде конфигураций часто встречается именно такой вариант, и это нормальная практика. Pow оправдана, когда показатель степени — переменная или дробное число.

Квадратный корень — это степень 0,5, поэтому его можно получить через Pow(Число, 0.5). Однако во встроенном языке есть отдельная функция Sqrt(Число), которая делает то же самое нагляднее. Извлечение корня из отрицательного числа приведёт к ошибке выполнения, поэтому перед вызовом полезна проверка Если Число >= 0 Тогда.

Как показать степень в тексте: надстрочные символы Юникода

Если задача — отобразить «м²», «см³» или «10⁻⁶» в наименовании, комментарии или печатной форме, вычисления не нужны. Строковые поля 1С не умеют форматировать отдельные символы как надстрочные, поэтому степень вставляется как готовый символ Юникода: ², ³, ¹, ⁴ и так далее.

Самый простой способ — скопировать нужный символ из таблицы символов Windows (программа «charmap») или из этой статьи и вставить его прямо в строку. В коде символ можно сформировать программно через функцию Символ() с числовым кодом: например, Символ(178) даёт «²», Символ(179) — «³», а Символ(185) — «¹».

Единица = "м" + Символ(178);   // м²

Объем = "см" + Символ(179); // см³

Для полного набора надстрочных цифр (⁴⁵⁶⁷⁸⁹⁰) и минуса (⁻) используются коды из диапазона Юникода U+2070–U+2079 и U+207B. Их тоже можно получить через Символ(), передав десятичное значение кода, например Символ(8315) для надстрочного минуса.

Как вставить надстрочный символ в строку
  1. 1
    Откройте таблицу символов Windows (Win+R, charmap) или скопируйте нужный знак: ² ³ ¹ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ ⁻
  2. 2
    Вставьте символ в поле наименования, комментария или в строковый литерал в модуле
  3. 3
    Для программной вставки используйте Символ(178) для ² и Символ(179) для ³
  4. 4
    Проверьте отображение в печатной форме и в выбранном шрифте

Степень в печатных формах и табличных документах

В табличном документе (макете печатной формы) содержимое ячейки — обычная строка, поэтому надстрочные символы Юникода работают и там. Достаточно поместить «м²» в текст ячейки макета или присвоить параметру значение с нужным символом. При выводе знак отобразится так же, как любой другой текст.

Ограничение связано со шрифтом: не все шрифты содержат глифы надстрочных цифр, особенно из расширенного диапазона (⁴–⁹, ⁻). Если в печатной форме вместо символа появился пустой квадрат или знак вопроса, замените шрифт ячейки на распространённый — Arial, Times New Roman или Calibri, где эти символы есть. Также проверяйте результат при экспорте в PDF и при печати: иногда проблема проявляется только на конкретном принтере или драйвере.

Контрольные точки

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

Отображение в форме
Норма

Символ ² или ³ виден в поле как надстрочный

Тревожный признак

Вместо символа квадрат, вопросительный знак или пробел

Печатная форма и PDF
Норма

Степень читается при предпросмотре и после сохранения в PDF

Тревожный признак

Символ пропадает или заменяется при экспорте

Результат Pow в коде
Норма

Pow(2, 10) возвращает 1024, Pow(9, 0.5) возвращает 3

Тревожный признак

Синтаксическая ошибка из-за оператора ^ или деление на ноль

Степень в запросах и СКД

В языке запросов 1С функции возведения в степень нет. Если степень нужна в выборке, есть три пути: пересчитать значение заранее и хранить его в реквизите, выполнить вычисление уже после запроса при обходе результата, либо использовать вычисляемое поле СКД, где доступны функции встроенного языка, включая Pow.

Для отчётов на СКД второй вариант обычно самый удобный: на вкладке «Вычисляемые поля» добавьте поле и в выражении напишите, например, Pow(Сумма, 2). Учтите, что вычисляемые поля считаются на каждую строку, поэтому на больших выборках тяжёлые формулы могут замедлить формирование отчёта.

Маршрут решения

Как выбрать способ

Нужно посчитать степень в модуле или формеИспользуйте Pow(Основание, Показатель), для корня — Sqrt()
Нужно показать м² или см³ в тексте или наименованииВставьте символ Юникода напрямую или через Символ(178)/Символ(179)
Нужна степень в отчёте на СКДСоздайте вычисляемое поле с выражением Pow()
Нужна степень прямо в запросеЗапрос не поддерживает Pow — считайте после выборки или храните готовое значение

Типичные ошибки и ограничения

Самая частая ошибка новичков — попытка написать степень оператором ^ по аналогии с Excel или другими языками. Во встроенном языке 1С такой записи нет, и модуль просто не пройдёт проверку синтаксиса. Вторая распространённая проблема — переполнение или потеря точности при больших показателях: результат Pow хранится как число с ограниченной разрядностью, поэтому для очень больших степеней значения стоит проверять.

При работе с надстрочными символами ошибки другого рода: символ теряется при обмене данными, если приёмник работает в кодировке без поддержки Юникода, либо не отображается из-за шрифта. Перед массовым заполнением наименований символами степеней проверьте весь путь данных: форма, печать, выгрузка в Excel, обмен с другими системами.

Типичные ошибки
01
Запись 2^10 вместо Pow(2, 10) — синтаксическая ошибка модуля
02
Pow(0, -1) без проверки — ошибка деления на ноль во время выполнения
03
Sqrt() или Pow(x, 0.5) от отрицательного числа — ошибка выполнения
04
Использование редких надстрочных символов без проверки шрифта — квадраты вместо цифр в печати
05
Ожидание функции степени в языке запросов — её там нет, нужен обходной путь

FAQ: частые вопросы о степенях в 1С

Можно ли возвести число в дробную степень, например в 1/3?

Да. Pow(27, 1/3) вернёт кубический корень из 27, то есть 3. Учитывайте, что деление 1/3 даёт округлённое десятичное значение, поэтому для точных расчётов результат лучше округлять функцией Окр() до нужного числа знаков.

Как написать «м²» в наименовании номенклатуры?

Откройте карточку элемента и вставьте символ ² прямо в поле наименования — скопируйте его из таблицы символов Windows (charmap) или из любого текста. Символ сохранится как обычная часть строки и будет виден в списках, документах и печатных формах.

Почему вместо надстрочной цифры печатается квадрат?

Шрифт ячейки табличного документа не содержит этого глифа. Смените шрифт на Arial, Times New Roman или Calibri и повторите вывод. Если проблема только в PDF — обновите или смените средство формирования PDF и проверьте внедрение шрифтов.

Есть ли в 1С логарифм и экспонента для связанных расчётов?

Да, встроенный язык включает функции Log (десятичный логарифм), Log10 и Exp (экспонента, e в степени x). Вместе с Pow они закрывают большинство финансовых и инженерных формул без внешних компонент.

Как возвести в степень в управляемой форме без написания кода?

Никак — вычисления в 1С выполняются только кодом встроенного языка или в вычисляемых полях СКД. Если требуется разовый расчёт, проще всего выполнить Pow() в консоли кода или через внешнюю обработку.

Итог

Что важно запомнить

Вычисление степени — только через Pow(Основание, Показатель), корень — через Sqrt(). Отображение степени в тексте — символами Юникода (², ³) напрямую или через Символ(178)/Символ(179). В запросах степени нет — используйте вычисляемые поля СКД или расчёт после выборки.