Почему не совпадают остатки товаров в справочнике Номенклатура и отчетах в УТ 10.3

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

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

Алгоритм расчета остатков в интерфейсе

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

  1. Общий остаток — это сумма физического наличия товара на всех типах складов организации. Он складывается из данных трех регистров:

    ТоварыНаСкладах + ТоварыВРознице + ТоварыВНТТ

  2. В резерве — количество товара, которое забронировано под заказы покупателей или внутренние нужды. Данные берутся из регистра:

    ТоварыВРезервеНаСкладах (важно не путать название, в старых версиях или при обсуждениях часто пропускают буквы, но техническое имя именно такое).

  3. Свободный остаток — количество товара, доступное к продаже или отгрузке. Формула расчета выглядит так:

    (ТоварыНаСкладах + ТоварыВРознице + ТоварыВНТТ) - ТоварыВРезервеНаСкладах - ТоварыКПередачеСоСкладов

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

Влияние регистра Свободные остатки

В некоторых релизах 1С:УТ 10.3 для ускорения работы системы был введен отдельный регистр накопления — Свободные остатки. Проанализируем ситуацию: если в настройках параметров учета включено использование этого регистра, система может перестать вычислять остаток «на лету» по нескольким таблицам, а начнет брать готовое число из этого регистра.

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

Особенности учета по типам складов и качеству

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

Также важно учитывать измерение Качество. Регистр Товары на складах хранит данные о товаре с качеством «Новый», «Брак», «Подпорчен». Однако свободный остаток для продажи часто настраивается так, чтобы учитывать только кондиционный товар. Если у вас на складе числится 10 единиц брака, они будут в общем остатке, но могут не попасть в свободный, создавая видимость ошибки.

Регистр Товары к передаче со складов

Многие программисты и пользователи забывают про регистр ТоварыКПередачеСоСкладов. Он задействуется при использовании ордерной схемы. Разберем пример:


// Логика работы ордерной схемы:
// 1. Оформлена "Реализация товаров и услуг", но "Расходный складской ордер" еще не выписан.
// 2. В регистре "Товары на складах" остаток еще есть (физически товар не уехал).
// 3. В регистре "Товары к передаче со складов" появляется запись.
// 4. Свободный остаток уменьшается, так как товар уже продан по документам.
Если ордерная схема была включена ошибочно или документы реализации не закрыты ордерами, свободный остаток будет занижен относительно физического наличия.

Методика диагностики и решения проблемы

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

  1. Сравнение движений по регистрам. Выберем конкретную карточку номенклатуры, по которой есть расхождение. Построим два отчета: «Универсальный отчет» по регистру Товары на складах и такой же отчет по регистру Свободные остатки (или Товары в резерве). Сравним документы-регистраторы. Если в одном регистре документ сделал движение, а в другом нет — мы нашли причину.
  2. Проверка корректировок. Проанализируем, не делались ли документы Корректировка записей регистров. Часто при исправлении остатков вручную программисты забывают обновить все связанные регистры, что ведет к рассинхронизации.
  3. Пересчет итогов. Иногда проблема кроется в технологическом сбое базы данных. Попробуем выполнить процедуру «Пересчет итогов» через «Конфигуратор» (Администрирование — Тестирование и исправление) или через управление итогами в режиме предприятия.
  4. Проверка характеристик и серий. Выясним, не завис ли остаток на «пустой» характеристике. Если товар приходовался с характеристикой «Синий», а резервировался без указания характеристики, система может некорректно отображать свободный остаток в сводном списке.

Использование отладчика для анализа запроса

Для программиста самым надежным способом будет посмотреть, какой именно запрос выполняется при открытии справочника. Найдем в конфигурации форму списка справочника Номенклатура, перейдем в процедуру обновления данных в нижней панели (обычно это связано с событием ПриАктивизацииСтроки) и проанализируем текст запроса. Это позволит точно понять, какие регистры и с какими условиями (например, по организации или качеству) опрашивает система в данной конкретной базе.

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

← На главную