Как отследить дату и документ постановки товара в резерв в 1С:УНФ?

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

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

Понимание механизмов резервирования в 1С:УНФ

Для начала проанализируем, как программа технически фиксирует постановку в резерв. В 1С:УНФ основным «хранилищем» этой информации является регистр накопления Запасы. Когда вы заполняете колонку «В резерв» в табличной части документа Заказ покупателя, система при проведении создает запись в этом регистре. Ключевым моментом здесь является то, что датой резервирования всегда выступает дата и время проведения самого документа-регистратора.

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

Метод 1: Настройка Универсального отчета

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

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

В настройках нам необходимо выполнить следующие действия. На вкладке Группировка добавим поля Номенклатура, Период (день или секунда) и Регистратор. На вкладке Отборы добавим условие: Заказ покупателя (или Заказ) должен быть заполнен, чтобы отсечь свободные остатки, не относящиеся к резервам под конкретные заказы. После формирования мы увидим четкую хронологию: дата, время, какой заказ поставил товар в резерв и в каком количестве.

Метод 2: Доработка стандартного отчета «Запасы»

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

Выясним причину отсутствия детализации. Зайдем в Настройки отчета, выберем Расширенный вид. На вкладке Структура мы увидим иерархию группировок. Нам нужно добавить новый уровень группировки под номенклатурой — поле Регистратор. После этого в отчет будут выводиться конкретные документы. Чтобы увидеть дату, добавим в колонки поле Период. Теперь, разворачивая плюсик у конкретного товара, мы увидим список всех Заказов покупателей, которые сформировали этот резерв, с указанием точной даты проведения.

Метод 3: Использование истории изменений (Версионирование)

Бывают сложные ситуации, когда резерв в одном и том же Заказе покупателя менялся несколько раз (например, сначала зарезервировали 5 штук, через день изменили на 10, а потом уменьшили до 2). В регистре Запасы при перепроведении документа старые записи заменяются новыми, и мы видим только конечный результат с датой последнего проведения документа.

Чтобы отследить именно историю «хотелок» пользователя внутри одного документа, проанализируем механизм Версионирование объектов. Если эта функция включена в базе (раздел Администрирование — Общие настройки — История изменений), мы сможем:

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

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

Технические нюансы: Запрос к базе данных

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


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

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

Резюме и рекомендации

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

← На главную