1C-CodeОшибки 1С → Деление на ноль

Деление на ноль в 1С — где оно прячется и как проверять

Сообщение платформы: Деление на ноль

Делитель оказался нулём. Само сообщение понятное; интересно другое — откуда взялся ноль, ведь в коде обычно стоит переменная, а не цифра.

Отчего это бывает

1. Делитель приходит из данных

ЦенаЗаЕдиницу = Сумма / Количество;    // количество бывает нулевым

Ноль в количестве, в курсе валюты, в базе распределения — обычное дело в незаполненном документе. Данные приходят от людей, и ноль там будет.

2. Деление на количество пустой коллекции

Среднее = Итого / Массив.Количество();  // пустой массив → ноль

3. В запросе NULL превратился в ноль

СУММА(Количество)    // по пустой группе даёт NULL, а ЕСТЬNULL(..., 0) — ноль

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

Что сделать

Проверяйте делитель прямо перед делением: Если Количество <> 0 Тогда. В запросах — ВЫБОР КОГДА Количество = 0 ТОГДА 0 ИНАЧЕ Сумма / Количество КОНЕЦ. И решите заранее, что считать правильным ответом при нуле: ноль, пустое значение или отказ. Это вопрос учёта, а не программирования.

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

Открыть тренажёр

Разобраться глубже

Другие частые ошибки

Поле объекта не обнаружено Значение не является значением объектного типа Переменная не определена Метод объекта не обнаружен Индекс находится за границами массива Преобразование значения типа «Строка» к числу невозможно