Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Остаток от деления в 1С 8.3 и 8.2

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

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

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

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

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

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

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

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

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 9 на “Остаток от деления в 1С 8.3 и 8.2
  1. Добрый вечер.А вы уже пробовали заполнять матрицу змейкой числами от 1 до 100 на 1с?

    Ответить

    • Змейкой уже не актуально. Правильнее Бустадефон (ходом быка).

      Ответить

  2. Если надо получить остаток от деления в запросе, то к сожалению это «ОстатокОтДеления = Делимое — Цел(Делимое / Делитель) * Делитель» похоже единственный способ. Самому пришлось так делать.

    Ответить

    • да, в запросе нельзя, а вот в СКД можно

      Ответить

  3. В каком смысле «1%2 = 1»?.. Это по каким таким логикам, каких миров?.. Что за великий программист подобное в голове своей провернул? Я не понимаю, как можно сию мысль осознать.

    Ответить

    • По обычной такой математической логике. Остаток от деления единицы на два равен единице.

      Ответить

    • тут надо смотреть на процесс деления с стороны только целых чисел. 1 на 2 целочисленно не делится. результат деления тут будет 0, а вот остаток и будет 1.
      если всЁ равно не понятно пока, тогда предлагаю рассмотреть деление 3 на 2 (или 5 на 2) в качестве примера.
      3 / 2 = 1, остаток 1 (так как 3 — 2 * 1 = 1).
      5 / 2 = 2, остаток 1 (так как 5 — 2 * 2 = 1).
      а теперь наш случай:
      1 / 2 = 0, остаток 1 (так как 1 — 2 * 0 = 1).

      ps: а вообще процессор компьютера, выполняя целочисленное деление командой div или idiv, получает целочисленный результат от деления и остаток одним действием.
      целочисленный результат помещается в регистр RAX (если рассматриваем 64-битный вариант), а остаток помещается в регистр RDX.

      Ответить

    • Посмотрите про такую алгебраическую структуру, как кольцо вычетов по модулю и всё встанет на свои места

      Ответить

  4. «Недавно в чужом программном столкнулся с тем»
    Уточните пожалуйста, чужой программный кто?
    (коммент можно удалить)

    Ответить

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

Ваш адрес email не будет опубликован.