Как сформировать отчет по остаткам и доступности товаров на прошедшую дату в 1С:Управление торговлей 11.4

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

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

Анализ архитектурных различий: УТ 10.3 против УТ 11.4

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

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

  1. Фактическое наличие товара на складе (регистр Товары на складах).
  2. Заказы клиентов в статусах, предполагающих резервирование.
  3. График поступления товаров (Заказы поставщикам, Заказы на сборку).
  4. Приоритеты заказов и даты отгрузки.

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

Решение №1: Переход на версию 1С:Управление торговлей 11.5

Рассмотрим наиболее рациональный путь, предлагаемый разработчиками «1С». В версии 11.5 подсистема управления запасами была серьезно переработана. Разберем основные изменения:

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

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

Решение №2: Использование типовых отчетов для частичного анализа

Если переход на новую версию временно невозможен, проанализируем, что мы можем получить из типовых инструментов УТ 11.4. Хотя прямого аналога отчета «на дату» нет, мы можем комбинировать данные:

  1. Ведомость по товарам на складах: Этот отчет позволяет увидеть физический остаток товара на любую дату. Мы можем настроить его по регистратору, чтобы понять, какие документы влияли на остаток. Однако помните: здесь нет информации о резервах.
  2. Универсальный отчет: Мы можем построить отчет напрямую по регистру накопления Заказы на отгрузку. Настроив группировки по номенклатуре и периоду, можно попытаться сопоставить эти данные с физическими остатками.
  3. Товарный календарь: Проанализируем этот инструмент. Он отлично показывает прогноз доступности на будущие периоды, основываясь на текущих остатках и плановых приходах/расходах. Однако для анализа прошлого периода он также не подходит.

Решение №3: Разработка собственного механизма «Снимков данных» (Snapshot)

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

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

Рассмотрим пример кода для регламентного задания, который собирает данные из типового регистра распределения и записывает их для истории:


Процедура ЗафиксироватьДоступностьНаДату() Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   РаспределениеЗапасов.Номенклатура КАК Номенклатура,
        |   РаспределениеЗапасов.Склад КАК Склад,
        |   СУММА(РаспределениеЗапасов.ВНаличии) КАК ФизическийОстаток,
        |   СУММА(РаспределениеЗапасов.Доступно) КАК СвободныйРезерв
        |ИЗ
        |   РегистрНакопления.РаспределениеЗапасов КАК РаспределениеЗапасов
        |СГРУППИРОВАТЬ ПО
        |   РаспределениеЗапасов.Номенклатура,
        |   РаспределениеЗапасов.Склад";
    
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.СнимкиДоступностиТоваров.СоздатьМенеджерЗаписи();
        МенеджерЗаписи.Период = ТекущаяДата();
        МенеджерЗаписи.Номенклатура = Выборка.Номенклатура;
        МенеджерЗаписи.Склад = Выборка.Склад;
        МенеджерЗаписи.Остаток = Выборка.ФизическийОстаток;
        МенеджерЗаписи.Доступно = Выборка.СвободныйРезерв;
        МенеджерЗаписи.Записать();
    КонецЦикла;
КонецПроцедуры

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

Важные нюансы учета резервов в УТ 11

Разберем подробнее, что именно мы теряем, когда пытаемся просто вычесть резервы из остатков. В 1С:УТ 11 реализовано несколько вариантов обеспечения:

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

Резюме

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

Выясним, какой из путей подходит именно вам, исходя из объемов базы данных и критичности этих отчетов для бизнеса. В большинстве случаев, переход на 11.5 окупается за счет снижения затрат на поддержку кастомных отчетов и исправление ошибок ручного распределения резервов.

← На главную