Проблема получения корректных остатков и резервов на прошедшую дату в 1С:Управление торговлей 11 (а также в 1С:ERP 2) является классической для систем, использующих механизм распределения запасов. Часто пользователи сталкиваются с ситуацией, когда при попытке сформировать отчет или запрос на прошлую дату, система показывает «минусы» или недостоверные данные по резервам, особенно если заказы редактировались или товары поступали позже даты создания заказа.
В этой статье мы подробно разберем причины возникновения таких искажений и рассмотрим несколько способов получения достоверной истории резервов для анализа работы отдела снабжения и складской логистики.
Для начала проанализируем ситуацию, описанную пользователем. Документ Заказ клиента создан 1-го числа, а товар реально поступил на склад 5-го числа и был зарезервирован в этом заказе. При проведении документа Заказ клиента движения в регистре накопления Свободные остатки часто записываются датой самого документа (1-м числом), а не датой фактического обеспечения или изменения статуса.
В результате возникают следующие проблемы:
В резерве со склада уменьшается, а В наличии (с учетом отгрузки) также меняется. История того, что товар был в резерве именно с 1-го по 5-е число, в оперативном регистре «затирается».Рассмотрим по шагам, как можно решить эту задачу программно и архитектурно.
Посмотрим на пример запроса, который часто пытаются использовать для решения задачи. Несмотря на то, что он может показывать отрицательные значения, это база для понимания работы регистра Свободные остатки. Также для анализа можно использовать отчет по движениям товаров с резервами, построенный на СКД по двум регистрам накопления нарастающим итогом.
ВЫБРАТЬ
СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
СвободныеОстаткиОстатки.Склад КАК Склад,
СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличии,
СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК ВРезервеСоСклада,
СвободныеОстаткиОстатки.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказ
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки(&ДатаКонтроля, Склад = &Склад И Номенклатура = &Номенклатура) КАК СвободныеОстаткиОстатки
Почему это решение не всегда работает? Как мы выяснили выше, если заказ от 01.09, а приход от 05.09, то на дату 02.09 этот запрос покажет ВНаличии = 0, а ВРезерве = 1. Математически свободный остаток станет равным -1. Чтобы получить корректную картину, нужно анализировать не только количественные данные, но и остатки и доступность товаров с ценой и детализацией по сериям для глубокого аудита склада.
Проанализируем интересную методику, предложенную опытными разработчиками: сопоставление данных регистра Свободные остатки и регистра Себестоимость товаров (или Выручка и себестоимость продаж).
Логика заключается в следующем:
Разница между количеством в Себестоимости и ресурсом В наличии в Свободных остатках на одну и ту же дату в прошлом может дать объем товара, который на тот момент находился в резерве. Однако этот метод требует сложного соединения по ключам аналитики (склад, номенклатура, характеристики) и не сработает, если товар был зарезервирован еще до его фактического прихода на склад.
Если бизнесу требуется надежная история резервов для KPI отдела снабжения, наиболее эффективным методом будет создание вспомогательного Регистра сведений (например, ИсторияРезервовНаДату).
Алгоритм реализации:
Период (тип Дата, без времени), Номенклатура, Склад и ресурсом КоличествоРезерв.Свободные остатки и записывает результат в наш новый регистр сведений.Это позволит в будущем строить отчеты мгновенно, просто выбирая данные из регистра сведений за нужный период, без необходимости выполнять тяжелые вычисления разницы между регистрами за прошлые даты.
В современных релизах УТ 11 (начиная с 11.4.6) основным источником данных о доступности является регистр Распределение запасов. Выясним, чем он может помочь.
В отличие от Свободных остатков, этот регистр хранит более детальные состояния: В наличии (свободно), В наличии (зарезервировано), Ожидается (зарезервировано). Для анализа прошлого рекомендуется использовать не таблицу Остатки, а таблицу Обороты этого регистра или специализированный регистр Распределение запасов движений. Это позволит отследить именно момент изменения состояния обеспечения, если в системе включена настройка «Использовать дату отгрузки в заказах».
Практический совет: Если вы хотите видеть историю без «минусов», убедитесь, что в настройках склада или заказов включено планирование по датам отгрузки. Тогда движения резервов будут привязаны к реальным датам потребности, а не к дате оформления бумажного заказа.
Подводя итог, можно сказать: штатные регистры 1С:УТ 11 оптимизированы для ответа на вопрос «что есть сейчас и что будет в будущем». Для анализа того, «что было зарезервировано месяц назад», лучше всего подходит метод фиксации ежедневных срезов в отдельный регистр сведений или использование отчета Исполнение заказов клиентов, который анализирует состояние заказов в связке с их фактическим обеспечением.