Как получить остатки товаров на произвольную дату в 1С:ERP 2.5.7 и выше?

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

Понимание проблемы архитектурных изменений

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

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

Решение: комбинированный подход к получению данных

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

1. Использование регистра накопления «Товары на складах»

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

Для этого мы можем использовать стандартную виртуальную таблицу Остатки. Рассмотрим пример запроса:


ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки

Этот запрос позволит вам получить срез физических остатков, однако он не учитывает резервы и текущие потребности.

2. Связка «Товары на складах» + «Запасы и потребности»

Если ваша задача — получить данные по свободным остаткам с учетом резервов на дату, рекомендуется связывать данные физических остатков и плановых данных. Для этого используем регистр Запасы и потребности.

Разберем логику построения собственного отчета:

  1. Извлекаем физический остаток из регистра Товары на складах на нужную дату.
  2. Получаем данные о резервах и потребностях из регистра Запасы и потребности.
  3. Программным путем рассчитываем нарастающий итог для определения доступного остатка.

Этот метод требует аккуратной обработки данных, так как расчет свободного остатка должен учитывать все виды обеспечения, заложенные в ERP. По сути, вы строите «аналог» старого механизма, анализируя движение документов в рамках регистра Запасы и потребности.

3. Рекомендации по анализу доступности

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

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

Итоговое резюме

На текущий момент для исторической аналитики мы используем связку Товары на складах (физическое наличие) и Запасы и потребности (плановые движения). Для оперативной работы — полагаемся на Распределение запасов и типовые отчеты конфигурации. При разработке собственных отчетов помните, что расчет доступности на дату теперь ложится на плечи программиста и требует обработки движений документов в хронологическом порядке.

← На главную