При работе в 1С:Бухгалтерии 3.0 пользователи иногда сталкиваются с критической ошибкой при попытке провести документ Возврат товаров от покупателя. Сообщение об ошибке гласит: Деление на 0. Эта ошибка указывает на то, что алгоритм расчета, заложенный в типовом коде конфигурации, пытается выполнить математическую операцию деления, где делитель оказывается равен нулю. Давайте разберем, почему это происходит и как найти причину проблемы.
Ошибка возникает в процедуре обработки проведения, когда система пытается вычислить коэффициент соответствия между количеством товара, указанным в текущем документе возврата, и количеством товара из исходного документа отгрузки. В коде 1С это выглядит следующим образом:
Коэфф = КоличествоВозвращено / СтрокаОтгрузки.Количество;
Если значение СтрокаОтгрузки.Количество равно нулю, выполнение программы прерывается, так как деление на ноль невозможно. Это происходит в следующих случаях:
Товары документа возврата содержится несколько строк с одной и той же номенклатурой, счетом учета и характеристикой, алгоритм поиска может ошибочно сопоставить их с неправильной записью партии.Чтобы решить данную проблему, мы предлагаем выполнить следующие действия, двигаясь от простого к сложному:
В первую очередь откройте документ Реализация (акт, накладная, УПД), который вы используете в качестве основания для возврата. Внимательно проверьте строки табличной части Товары. Убедитесь, что ни в одной из строк количество не равно нулю. Даже если визуально всё верно, попробуйте перевыбрать позицию номенклатуры в строке или перепровести исходный документ, чтобы исключить ошибки записи в регистрах.
Проанализируйте карточку номенклатуры. Проверьте коэффициенты в единицах измерения. Если вы использовали нестандартные единицы измерения, убедитесь, что коэффициент пересчета не равен 0 или 1 (в зависимости от настроек). Если после создания реализации настройки номенклатуры менялись, это могло привести к логическому конфликту при расчете движений документа возврата.
Рассмотрим ситуацию, когда в документе возврата несколько строк с одинаковыми параметрами. 1С может пытаться списать общее количество из одной строки отгрузки, которая не покрывает объем возврата, либо сталкиваться с неоднозначностью при поиске партии. Попробуйте удалить лишние строки и сгруппировать товар в одну запись, если это возможно.
Если вы являетесь программистом, запустите 1С в режиме Конфигуратор и установите точку останова в общем модуле УчетТоваров на строке 2094, где происходит расчет коэффициента. При пошаговом выполнении (клавиша F11) вы сможете увидеть значение переменной СтрокаОтгрузки.Количество. Если она равна 0, значит, проблема кроется в данных регистра накопления, на который ссылается процедура ПодготовитьТаблицуВозвращенныеСписанныеТовары.
Если вы обнаружили, что проблема вызвана повреждением данных (например, «битыми» записями в регистрах), не всегда стоит пытаться править код. Попробуйте создать новый документ возврата, не копированием, а «с нуля» на основании документа продажи. Если ошибка повторяется, проверьте, не было ли в этой реализации операции Корректировка реализации, которая могла «затереть» исходное количество. В крайнем случае, для исправления ситуации можно использовать документ Корректировка реализации с видом операции Исправление ошибок, чтобы привести остатки по регистрам в соответствие с фактическим состоянием склада.