Как устранить ошибку «Обнаружено нулевое количество при пересчете в единицу хранения» в 1С:Управление торговлей 11?

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

При работе в 1С:Управление торговлей (редакции 11.4 и 11.5) пользователи часто сталкиваются с системным сообщением: «Обнаружено нулевое количество при пересчете в единицу хранения в строке списка "Товары"». Эта ошибка обычно возникает при попытке провести документы «Возврат товаров от клиента», «Реализация товаров и услуг» или при вводе остатков. Система блокирует проведение, так как после математических операций количество товара превращается в «технический ноль», что недопустимо для складского учета.

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

Разберем причину возникновения ошибки

Суть проблемы заключается в механизме пересчета единиц измерения. В конфигурации Управление торговлей 11 учет ведется одновременно в двух величинах: единицах хранения (базовых) и упаковках (единицах измерения документа). Когда мы указываем количество в документе, система умножает его на Коэффициент, указанный для выбранной упаковки, чтобы получить значение в базовых единицах для регистра Товары на складах.

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

Способ 1. Проверка коэффициентов в справочнике «Упаковки»

Первым делом проанализируем справочник УпаковкиЕдиницыИзмерения. Это наиболее частая причина ошибок, особенно после переноса данных из других систем (например, из УТ 10.3). Выясним, правильно ли настроены связи между единицами:

  1. Откроем карточку номенклатуры, по которой возникает ошибка.
  2. Перейдем в раздел «Единицы измерения и упаковки».
  3. Убедимся, что Единица хранения выбрана корректно. Если товар весовой, базовой единицей должен быть «кг», а не «шт».
  4. Проверим список используемых упаковок. Найдем ту единицу, которую мы выбираем в документе. Коэффициент этой упаковки не должен быть равен нулю. Если коэффициент пуст или равен 0, любое количество в документе при пересчете даст 0 в остатках.
  5. Если мы обнаружили, что для товара с базовой единицей «шт» создана упаковка «кг» с коэффициентом, например, 0.001, то при продаже малого веса система не сможет корректно рассчитать количество в штуках.

Способ 2. Настройка точности в Классификаторе единиц измерения (ОКЕИ)

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

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

Способ 3. Устранение ошибок при переносе данных

Рассмотрим ситуацию, когда ошибка массово возникает после перехода с версии 10.3 на 11.5. Часто при программной загрузке через Загрузка данных из табличного документа или стандартные обработки миграции нарушается целостность ссылок. Проанализируем возможные скрытые дефекты:

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

Способ 4. Программная корректировка алгоритма округления

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

Найдем в общем модуле или модуле менеджера документа место, где происходит расчет количества. Часто проблема кроется в использовании функции Окр() с параметром точности 0. Посмотрим на пример изменения кода:


// Было (округление до целого):
Результат = Окр(ИсходноеЧисло, 0, РежимОкругления.Окр15как20);

// Стало (позволяем 3 знака после запятой):
Результат = Окр(ИсходноеЧисло, 3, РежимОкругления.Окр15как10);

Такое изменение позволит системе учитывать дробные части при пересчете веса в базовые единицы, что исключит появление «нулевого количества» и позволит проводить документы с высокой точностью.

Способ 5. Проверка весовых характеристик номенклатуры

Выясним еще один нюанс: в карточке номенклатуры УТ 11 есть реквизит Вес (на вкладке «Реквизиты»). Если в системе включены функциональные опции по работе с весовым товаром, программа может пытаться сопоставить введенное количество с весом единицы. Если вес заполнен некорректно (например, указано 0 кг для 1 штуки), это также может приводить к конфликтам при расчете итоговых показателей в документе возврата или отгрузки — для этого подойдёт расчет и отображение весо-объемных характеристик.

Резюмируем: для решения проблемы нам необходимо обеспечить три условия:

← На главную