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

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

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

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

Причины возникновения «минусов» и некорректных данных

Для начала проанализируем ситуацию, описанную пользователем. Документ Заказ клиента создан 1-го числа, а товар реально поступил на склад 5-го числа и был зарезервирован в этом заказе. При проведении документа Заказ клиента движения в регистре накопления Свободные остатки часто записываются датой самого документа (1-м числом), а не датой фактического обеспечения или изменения статуса.

В результате возникают следующие проблемы:

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

Рассмотрим по шагам, как можно решить эту задачу программно и архитектурно.

Способ 1. Анализ через запрос к виртуальным таблицам остатков

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


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

Почему это решение не всегда работает? Как мы выяснили выше, если заказ от 01.09, а приход от 05.09, то на дату 02.09 этот запрос покажет ВНаличии = 0, а ВРезерве = 1. Математически свободный остаток станет равным -1. Чтобы получить корректную картину, нужно анализировать не только количественные данные, но и остатки и доступность товаров с ценой и детализацией по сериям для глубокого аудита склада.

Способ 2. Сравнение регистра оперативного учета и финансового учета

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

Логика заключается в следующем:

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

Способ 3. Создание ежедневных срезов (Регистр сведений)

Если бизнесу требуется надежная история резервов для KPI отдела снабжения, наиболее эффективным методом будет создание вспомогательного Регистра сведений (например, ИсторияРезервовНаДату).

Алгоритм реализации:

  1. Создаем непериодический регистр сведений с измерениями Период (тип Дата, без времени), Номенклатура, Склад и ресурсом КоличествоРезерв.
  2. Настраиваем Регламентное задание, которое запускается ежедневно в 23:59.
  3. Задание выполняет запрос к текущим остаткам регистра Свободные остатки и записывает результат в наш новый регистр сведений.

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

Способ 4. Использование регистра «Распределение запасов»

В современных релизах УТ 11 (начиная с 11.4.6) основным источником данных о доступности является регистр Распределение запасов. Выясним, чем он может помочь.

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

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

Резюме

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

← На главную