Почему при проведении документа Возврат товаров от покупателя в 1С:Бухгалтерии 3.0 возникает ошибка Деление на 0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Торговля и дистрибуция
← На главную

При работе в 1С:Бухгалтерии 3.0 пользователи иногда сталкиваются с критической ошибкой при попытке провести документ Возврат товаров от покупателя. Сообщение об ошибке гласит: Деление на 0. Эта ошибка указывает на то, что алгоритм расчета, заложенный в типовом коде конфигурации, пытается выполнить математическую операцию деления, где делитель оказывается равен нулю. Давайте разберем, почему это происходит и как найти причину проблемы.

Анализ причин возникновения ошибки

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

Коэфф = КоличествоВозвращено / СтрокаОтгрузки.Количество;

Если значение СтрокаОтгрузки.Количество равно нулю, выполнение программы прерывается, так как деление на ноль невозможно. Это происходит в следующих случаях:

  1. Нулевое количество в исходной реализации: Если в документе продажи, на основании которого создается возврат, количество товара по какой-то причине указано как 0, система не сможет рассчитать пропорцию.
  2. Проблемы с единицами измерения: Если для позиции номенклатуры были изменены коэффициенты пересчета единиц измерения уже после проведения исходного документа, программа может некорректно «читать» количество при обращении к регистрам.
  3. Дублирование строк: Если в табличной части Товары документа возврата содержится несколько строк с одной и той же номенклатурой, счетом учета и характеристикой, алгоритм поиска может ошибочно сопоставить их с неправильной записью партии.
  4. Отсутствие связи с партией: Если возврат оформляется на товар, который фактически отсутствует в базе по выбранному документу-основанию (например, была проведена корректировка, нарушившая целостность данных), запрос к данным возвращает пустое количество.

Как провести диагностику и устранить ошибку

Чтобы решить данную проблему, мы предлагаем выполнить следующие действия, двигаясь от простого к сложному:

Шаг 1: Проверка исходного документа реализации

В первую очередь откройте документ Реализация (акт, накладная, УПД), который вы используете в качестве основания для возврата. Внимательно проверьте строки табличной части Товары. Убедитесь, что ни в одной из строк количество не равно нулю. Даже если визуально всё верно, попробуйте перевыбрать позицию номенклатуры в строке или перепровести исходный документ, чтобы исключить ошибки записи в регистрах.

Шаг 2: Проверка единиц измерения

Проанализируйте карточку номенклатуры. Проверьте коэффициенты в единицах измерения. Если вы использовали нестандартные единицы измерения, убедитесь, что коэффициент пересчета не равен 0 или 1 (в зависимости от настроек). Если после создания реализации настройки номенклатуры менялись, это могло привести к логическому конфликту при расчете движений документа возврата.

Шаг 3: Поиск дублирующихся записей

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

Шаг 4: Анализ работы через отладчик (для специалистов)

Если вы являетесь программистом, запустите 1С в режиме Конфигуратор и установите точку останова в общем модуле УчетТоваров на строке 2094, где происходит расчет коэффициента. При пошаговом выполнении (клавиша F11) вы сможете увидеть значение переменной СтрокаОтгрузки.Количество. Если она равна 0, значит, проблема кроется в данных регистра накопления, на который ссылается процедура ПодготовитьТаблицуВозвращенныеСписанныеТовары.

Рекомендации по исправлению данных

Если вы обнаружили, что проблема вызвана повреждением данных (например, «битыми» записями в регистрах), не всегда стоит пытаться править код. Попробуйте создать новый документ возврата, не копированием, а «с нуля» на основании документа продажи. Если ошибка повторяется, проверьте, не было ли в этой реализации операции Корректировка реализации, которая могла «затереть» исходное количество. В крайнем случае, для исправления ситуации можно использовать документ Корректировка реализации с видом операции Исправление ошибок, чтобы привести остатки по регистрам в соответствие с фактическим состоянием склада.

← На главную