Как в 1С:Управление торговлей 11 создать отчет по остаткам, оборотам и зависшим резервам клиентов?

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

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

Основные причины некорректных данных в отчете

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

  1. Неверная работа с периодом: Если в параметрах СКД для виртуальной таблицы ОстаткиИОбороты не заданы корректные границы периода, система может игнорировать записи внутри дня или отображать данные только на текущую секунду.
  2. Использование не тех регистров: Попытка собрать отчет через сложный запрос с множеством ОБЪЕДИНИТЬ часто приводит к избыточности. Для получения аналитики по резервам необходимо использовать регистр накопления ТоварыКОтгрузке, а для контроля задолженности и оплат — регистр РасчетыСКлиентами.

Шаг 1: Правильная настройка параметров периода

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

Правило хорошего тона при работе с СКД — использование фигурных скобок для параметров, чтобы система могла корректно обрабатывать интерактивное изменение пользователем: {&НачалоПериода} и {&КонецПериода}.

Шаг 2: Использование регистра «Товары к отгрузке»

Вместо самостоятельного написания запросов с объединениями, которые создают большую нагрузку на сервер, воспользуемся стандартным механизмом ОстаткиИОбороты регистра ТоварыКОтгрузке. Этот регистр фиксирует все движения резервов.

Рассмотрим структуру запроса для СКД:


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

Шаг 3: Соединение данных для анализа оборачиваемости

Чтобы увидеть не только резервы, но и реальные продажи, вам потребуется связать набор данных по резервам с набором данных по продажам. Это делается через «Связи наборов данных» в настройках СКД.

Алгоритм действий:

  1. Создайте первый набор данных (запрос) для получения остатков по регистру ТоварыНаСкладах.
  2. Создайте второй набор данных (запрос) для резервов по регистру ТоварыКОтгрузке.
  3. В поле Связи наборов данных установите связь по полям Номенклатура и Характеристика.
  4. Для анализа «зависших» заказов добавьте в отчет ЗаказКлиента из регистра РасчетыСКлиентами.

Почему это решение эффективнее?

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

Если вы хотите увидеть «В наличии всего», рекомендуем обращаться к регистру ТоварыНаСкладах, а не пытаться вычислить этот показатель через ТоварыКОтгрузке. Разделение данных по регистрам в СКД позволяет легко настраивать отчет: вы можете выводить информацию о том, сколько товара лежит на складе, сколько из него в резерве и сколько реально доступно для свободной продажи.

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

← На главную