1с остаток от деления в запросе

Недавно в чужом программном столкнулся с тем, что не все программисты 1С знают, как в 1С 8.2 или 8.3 получить остаток от деления.

Периодически встречаются вот такие конструкции:

ОстатокОтДеления = Делимое — Цел(Делимое / Делитель) * Делитель;

Это конечно забавный и остроумный способ. Но есть более простой метод, встроенный в платформу:

ОстатокОтДеления = Делимое % Делитель;

Вот, собственно, и всё!

P.S. Кстати, результат 1%2 = 1, некоторые почему-то думают, что ноль ��

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

Оператор %
В этой статье я подробно разберу оператор %, который возвращает остаток от деления. Рассмотрим особенности его работы, и задачи, когда он может быть применим.

Работа оператора % описана в моей книге «Программировать в 1С за 9 шагов», но не приведены случаи, когда он может понадобиться, в этой статье я восполню пробел, и, возможно, она войдет в уже новую редакцию книги.
И так начнем. Оператор % получает остаток от деления одного числа на другое.
Е = A % B;
E – остаток от деления А на В.
Когда он может быть применим?
Рассмотрим самые . С его помощью можно определить четное число или нет. Если выражение А%2 равно 0, то число четное (остатка от деления нет), а если А%2 не равно 0, то число нечетное.
Так же с его помощью можно вычислять число определенной кратности. Например, есть цикл от 1 до 100, нам нужно вывести на экран числа кратные, к примеру, 7. В этом случае будет такой код:

И такой результат работы этого кода

Рассмотрим, еще один способ применения оператора %. Очень часто время получается в секундах, например при вычитании одной даты из другой. И бывает необходимость привести все это в какой-то нормальный вид. Поясню, какой будет в этом случае алгоритм
Пусть мы имеем число секунд: 56321.
Нам сейчас нужно получить точное количество минут в этом числе секунд, минута состоит из 60 секунд. Поэтому получив остаток 56321 % 60, мы получим «лишние» секунды (например. 142 = 60 + 60+ 22, 22 – и будет остаток от деления 142 %60). А после того, как вычтем из исходного числа остаток от деления, и поделим все это на 60, то узнаем ровное количество минут в этом числе. Точно так же узнаем ровное количество часов, дней, месяцев и т.д.
Сейчас я создам небольшую обработку, которая будет раскладывать число в секундах на минуты, часы и дни (на месяцы и года дальше будет раскладывать не совсем корректно).
Данная форма обработки будет иметь следующий вид:

Код, который раскладывает число секунд на составляющие:

&НаКлиенте
Процедура Разложить ( Команда )
Секунды = СекундыОбщие % 60 ;
МинутыОбщие = ( СекундыОбщие — Секунды ) / 60 ;
Минуты = МинутыОбщие % 60 ;
ЧасыОбщие = ( МинутыОбщие — Минуты ) / 60 ;
Часы = ЧасыОбщие % 24 ;
Дни = ( ЧасыОбщие — Часы ) / 24 ;
КонецПроцедуры

Посмотрим результат работы этого кода, на некоторых примерах.

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

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

Можно оплатить напрямую
Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 9 шагов»

  1. Без сложных технических терминов.
  2. Более 500 страниц практического материала.
  3. Каждое задание сопровождается рисунком (скриншот).
  4. Сборник задач для домашней проработки.
  5. Книга написана понятным и простым языком — для новичка.
  6. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

Промо-код на скидку в 16%: vCph8bW3rE

Собственные наработки и набитые шишки в моей практике по программированию в 1С.

Страницы

среда, 28 октября 2015 г.

Как найти целое число от числа в запросе

Иногда необходимо получить целое число в запросе. Аналог Цел() языка. Необходимо прибегнуть к мелким хитростям, поскольку такого метода в запросе не существет. Но не стоит огорчаться.

Вот собственно необходимо задействовать конструкцию ВЫРАЗИТЬ(). Для положительных чисел необходимо вычесть 0.5, а для отрицательных чисел прибавить 0.5. Вот пример:

ВЫБОР КОГДА ВашеЧисло > 0 ТОГДА
ВЫРАЗИТЬ(ВашеЧисло — 0.5 КАК Число(15, 0))
ИНАЧЕ
ВЫРАЗИТЬ(ВашеЧисло + 0.5 КАК Число(15, 0))

Оцените статью
Добавить комментарий