Почему отчет «Остатки и доступность товаров» в 1C:ERP не показывает остаток, хотя товар есть на складе?

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

В процессе эксплуатации 1C:ERP, особенно версий редакций 2.4 и 2.5, пользователи и специалисты часто сталкиваются с запутанной ситуацией. Мы видим, что физически товар на складе есть, в форме подбора документов (например, в Реализации) колонка «В наличии» заполнена корректно, но стоит открыть отчет «Остатки и доступность товаров», как мы обнаруживаем пустые строки или некорректные данные. В таких случаях для быстрой диагностики стоит запустить анализ продаж, остатков, резервов и доступности, чтобы сразу увидеть общую картину расхождений — для этого есть отчет для выявления расхождений остатков.

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

Архитектура хранения запасов: в чем подвох?

Чтобы понять корень проблемы, нам нужно заглянуть «под капот» механизма распределения запасов. В 1C:ERP существуют два ключевых объекта метаданных, отвечающих за эту подсистему:

  1. Регистр накопления (РН) ЗапасыИПотребности. Это первичный источник правды. Именно сюда пишутся движения при проведении документов (Приобретение, Реализация, Ордера). Здесь хранится полная история движений.
  2. Регистр сведений (РС) РаспределениеЗапасов. Это служебная, «теневая» таблица. Она представляет собой актуальный срез (индекс) данных, рассчитанный на основании регистра накопления.

Зачем нужна такая сложность? Дело в производительности. Отчет «Остатки и доступность товаров» и механизмы расчета доступности при проведении документов обращаются именно к регистру сведений РаспределениеЗапасов, так как чтение из плоской таблицы регистра сведений происходит значительно быстрее, чем анализ остатков и оборотов тяжелого регистра накопления.

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

Причина 1: Устаревшие настройки отчета

Прежде чем приступать к «хирургическому вмешательству» в данные, давайте исключим самую простую причину. В версиях ERP (особенно при переходе на релизы 2.5.12 и выше) разработчики 1С существенно меняли структуру регистров и алгоритмы работы с запасами.

В связи с этим менялась и Схема Компоновки Данных (СКД) отчета. Если у пользователя был сохранен старый вариант отчета (пользовательские настройки), то при обновлении конфигурации ссылки на поля могли сбиться.

Решение:

В форме отчета «Остатки и доступность товаров» необходимо выполнить сброс настроек до стандартных:

  1. Откройте отчет.
  2. Перейдите в меню «Ещё» (в правом верхнем углу).
  3. Выберите пункт «Стандартные настройки» или «Установить стандартные настройки».

Если после этого колонки заполнились данными — проблема была исключительно в визуальном представлении. Также можно попробовать сторонний отчет об остатках и доступности товаров со штрихкодом, чтобы исключить ошибки типовой СКД.

Причина 2: Ошибки отложенных вычислений

Обновление данных в регистре сведений РаспределениеЗапасов часто происходит не синхронно с проведением документа, а в фоновом режиме, чтобы не замедлять работу пользователей. За это отвечает механизм отложенных движений.

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

Диагностика:

Нам следует проверить состояние фоновых заданий. В разделе «НСИ и администрирование» — «Обслуживание» — «Регламентные и фоновые задания» найдите задания, связанные с распределением запасов (например, Выполнение отложенных движений по расчетам с партнерами и запасам).

Если вы видите ошибки выполнения, необходимо их проанализировать в Журнале регистрации. Часто простой перезапуск задания или проведение документов вручную может исправить ситуацию.

Причина 3: Рассинхронизация регистров и исправление ошибок

Если настройки сброшены, фоновые задания работают, но данных в отчете всё еще нет, значит, мы имеем дело с нарушением целостности данных между регистром накопления и регистром сведений. Это могло произойти из-за программных ошибок (багов) конкретного релиза (как упоминалось в теме про версию 2.5.12), неудачного обновления или некорректного завершения транзакций.

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

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

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

Имя объекта метаданных: Обработка.ИсправлениеОшибокВРегистреСведенийРаспределениеЗапасов.

Давайте рассмотрим алгоритм действий для исправления ситуации:

  1. Сделайте резервную копию базы данных. Операции пересчета регистров необратимы и могут затронуть большие объемы данных.
  2. Запустите «Функции для технического специалиста» (ранее «Все функции»).
  3. Найдите обработку «Исправление ошибок в регистре сведений Распределение запасов». В пользовательском интерфейсе она может находиться по пути: НСИ и администрирование — Поддержка и обслуживание — Корректировка данных.
  4. В открывшейся форме вы можете выбрать отбор. Рекомендуем сначала попробовать исправить ситуацию точечно:
    • Установите отбор по конкретной Номенклатуре, с которой есть проблема.
    • Если проблема глобальная, можно выполнять пересчет целиком (это займет время).
  5. Нажмите кнопку выполнения исправления.

Что делает эта обработка?

Она работает по следующему принципу:

  1. Очищает записи в регистре сведений РаспределениеЗапасов по выбранному отбору.
  2. Считывает актуальные остатки, резервы и потребности из регистра накопления ЗапасыИПотребности.
  3. Заново формирует записи в регистре сведений.

После завершения работы обработки снова сформируйте отчет. Данные должны появиться.

Почему в форме подбора остаток был?

Автор темы отметил интересный нюанс: «В форме подбора товаров остаток появился (колонка доступность и в наличии)». Почему так произошло, если отчет был пуст?

Это связано с тем, что разные инструменты системы могут обращаться к разным источникам данных. Для глубокой проверки соответствия данных в разных подсистемах рекомендуем провести сравнение товаров на складах организаций и себестоимости товаров, а если на складе используется ордерная схема — применить контрольный отчет по остаткам товаров в финансовом и оперативном учете, чтобы отловить расхождения:

Резюме

Если вы столкнулись с тем, что отчет по доступности товаров врет:

  1. Проверьте и сбросьте пользовательские настройки отчета.
  2. Убедитесь, что ваша версия ERP актуальна (ошибки релиза 2.5.12 были исправлены в последующих версиях).
  3. Используйте штатную обработку ИсправлениеОшибокВРегистреСведенийРаспределениеЗапасов для синхронизации данных между регистрами. Также полезно настроить контроль остатков и резервов с детальным анализом складских позиций для предотвращения подобных ситуаций в будущем — для решения этой задачи есть инструмент автоматического контроля остатков и резервов.
← На главную