Как получить последнюю цифру числа в 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке отчетов или обработок на платформе 1С:Предприятие часто возникает задача программного выделения последней цифры числа. Эта задача решается по-разному в зависимости от того, где именно вы производите вычисления — в обычном программном модуле или внутри языка запросов. Давайте подробно разберем оба подхода, чтобы вы могли уверенно использовать их в своей работе.

Использование функций языка в модулях 1С

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

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

Посмотрим на пример правильного кода:


// Извлекаем последнюю цифру с учетом форматирования
// Параметр ЧГ=0 отключает группировку разрядов, чтобы пробелы не мешали
ПоследняяЦифра = Прав(Формат(ВашеЧисло, "ЧГ=0"), 1);

Разберем, почему мы используем Формат вместо обычного Строка. Функция Строка при работе с большими числами может добавить пробелы (например, «1 000»), и тогда функция Прав вернет пробел, а не цифру. Использование ЧГ=0 гарантирует, что мы получим чистое числовое представление без лишних символов.

Получение последней цифры в языке запросов

В языке запросов ситуация иная. Внутри конструкции ВЫБРАТЬ... ИЗ... у нас нет привычных функций Прав или Лев. Здесь необходимо использовать математические методы. Самый эффективный способ получить последнюю цифру целого числа — это использование оператора ОСТАТОК.

Математически последняя цифра числа — это остаток от деления этого числа на 10. В языке запросов 1С это записывается следующим образом:

Число ОСТАТОК 10

Этот подход является наиболее производительным, так как платформа не выполняет преобразование типов, а работает непосредственно с числовыми данными.

Работа с дробными числами в запросах

Часто в регистрах хранятся не целые числа, а значения с дробной частью (например, цена или количество). Чтобы получить последнюю цифру целой части, нам нужно сначала «отсечь» все, что находится после запятой. Для этого в запросах 1С используется конструкция ВЫРАЗИТЬ.

Давайте рассмотрим, как это сделать по шагам:

  1. Преобразуем число в целое с помощью ВЫРАЗИТЬ(Число КАК ЧИСЛО(15, 0)). Это округлит или отбросит дробную часть в зависимости от настроек системы.
  2. Применим оператор ОСТАТОК к результату вычисления.

Пример сложной конструкции для запроса:


ВЫБРАТЬ
    ВТ.Цена,
    ВЫРАЗИТЬ(ВТ.Цена КАК ЧИСЛО(15, 0)) ОСТАТОК 10 КАК ПоследняяЦифра
ИЗ
    ВашаТаблица КАК ВТ

Альтернативные математические подходы

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


// Конструкция для вычисления последней цифры перед запятой
ВЫРАЗИТЬ(Поле1 * 0.1 - 0.5 КАК ЧИСЛО(15, 0)) * 10

Этот метод математически сдвигает запятую и позволяет выполнять манипуляции с разрядами внутри запроса. Однако помните, что метод с использованием ОСТАТОК является более универсальным, читаемым и предпочтительным для большинства типовых задач.

Подведем итоги

Для успешного решения задачи всегда анализируйте, где именно выполняется ваш код:

Использование правильных инструментов позволяет писать лаконичный и производительный код, который легко поддерживать и развивать в будущем. Успехов в изучении платформы 1С!

← На главную