[Alimir_BootModal_Login]

Внутренний язык программирования 1С 8.3 для начинающих программистов: математика в 1С

 Автор уроков и преподаватель школы: Владимир Милькин

На одном из первых занятий мы уже разбирали использование арифметических операций в 1С 8.3. Конечно, это не все математические операции, которые доступны разработчику и сегодня мы восполним этот пробел.

Ваша задача на этом уроке воспроизводить все примеры у себя на компьютере в модуле управляемого приложения.

Математические операции в 1С

Представим, что у нас есть число с дробной частью:

Цена = 100.45;

И мы хотим округлить его дробную часть до первого знака после запятой:

ОкругленнаяЦена = Окр(Цена, 1); // вернёт 100.5

Мы воспользовались командой Окр, которая принимает число и количество знаков дробной части после которых нужно округлить значение.

В качестве результата округления мы получим 100.5. Но почему не 100.4?

По умолчанию, команда Окр делает округление в большую сторону, поэтому мы получим 100.5. Но если потребуется округление в меньшую сторону, нужно просто передать третьим параметром ноль:

ОкругленнаяЦена = Окр(Цена, 1, 0); // вернёт 100.4

А теперь давайте отбросим дробную часть числа, чтобы осталась только целая часть:

ЦелаяЧасть = Цел(Цена); // вернёт 100

Мы воспользовались командой Цел, которая принимает число с дробной частью и возвращает только его целую часть.

Иногда при расчётах требуется возвести число в степень:

ДесятьВКубе = Pow(10, 3); // вернёт 1000

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

А порою нам требуется, наоборот, к примеру извлечь квадратный корень из числа:

КвадратныйКореньИз25 = Sqrt(25); // вернёт 5

Ещё задача. Пусть у нас имеется конечный набор чисел и нужно найти максимальное значение:

МаксимальноеЗначениеИзТрёхЧисел = Макс(10, 20, 30); // вернёт 30
МаксимальноеЗначениеИзДвухЧисел = Макс(0, -5); // вернёт 0

Количество параметров, которые можно передавать в функцию Макс для поиска максимального элемента неограниченно.

Функция Мин решает обратную задачу:

МинимальноеЗначениеИзТрёхЧисел = Мин(10, 20, 30); // вернёт 10
МинимальноеЗначениеИзДвухЧисел = Мин(0, -5); // вернёт -5

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

ГСЧ = Новый ГенераторСлучайныхЧисел();
Сообщить(ГСЧ.СлучайноеЧисло(0, 2));

Первой строкой мы создаём объект ГенераторСлучайныхЧисел и связываем с ним нашу переменную ГСЧ.

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

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

С более полным перечнем математических функций в 1С вы можете ознакомиться в справочнике по языку (ссылка).

Пройдите тест

Начать тест

Домашнее задание

а) Напишите программу, которая генерирует три случайные числа в диапазоне от 1 до 1000. Генератор случайных чисел инициализируете числом 2014 (об этом ниже). Затем каждое число возводится в 5 степень. Затем из каждого числа извлекается квадратный корень. Затем каждое число делится на 3. Затем каждое число округляется до второго знака в меньшую сторону. Затем каждое число умножается на 0.25. Затем от каждого числа отбрасывается дробная часть. И, наконец, находится сумма всех получившихся чисел, которая и выводится пользователю. Получившееся значение будет равно 849442.

Подсказка:

Чтобы инициализировать генератор определённым числом (например, 2014) напишем:

ГСЧ = Новый ГенераторСлучайныхЧисел(2014);

Инициализация определённым числом позволит вам получить на своём компьютере ту же самую последовательность случайных чисел, что получил я. Это нужно, чтобы вы в конце выполнения программы получили тот же самый ответ, что и я  - 849442.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Дополнение

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

Для учеников

Уровень сложности уроков идёт снизу вверх. Поэтому старайтесь заниматься последовательно, ничего не пропуская и не откладывая на потом.

Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.

На вопросы учеников — отвечаю по почте,  но прежде загляните в ЧАВО (ссылка) .

С уважением, Владимир Милькин