При работе в УТ 11 часто возникает потребность в анализе оборачиваемости товаров. Одной из ключевых задач является выявление «зависших» резервов: ситуаций, когда клиент зарезервировал товар, но не выкупает его в течение длительного времени, при этом складские остатки истощаются. Разберем, как правильно построить отчет, который покажет динамику за период, а не просто текущее состояние.
Многие разработчики при попытке создать отчет сталкиваются с тем, что данные отображаются некорректно или «ерундой». Основных причин две:
СКД для виртуальной таблицы ОстаткиИОбороты не заданы корректные границы периода, система может игнорировать записи внутри дня или отображать данные только на текущую секунду.ОБЪЕДИНИТЬ часто приводит к избыточности. Для получения аналитики по резервам необходимо использовать регистр накопления ТоварыКОтгрузке, а для контроля задолженности и оплат — регистр РасчетыСКлиентами.Для того чтобы отчет по остаткам и оборотам работал корректно за любой выбранный период, важно правильно настроить параметры в СКД. Никогда не забывайте, что КонецПериода должен включать в себя весь последний день. Для этого необходимо принудительно задать время 23:59:59.
Правило хорошего тона при работе с СКД — использование фигурных скобок для параметров, чтобы система могла корректно обрабатывать интерактивное изменение пользователем: {&НачалоПериода} и {&КонецПериода}.
Вместо самостоятельного написания запросов с объединениями, которые создают большую нагрузку на сервер, воспользуемся стандартным механизмом ОстаткиИОбороты регистра ТоварыКОтгрузке. Этот регистр фиксирует все движения резервов.
Рассмотрим структуру запроса для СКД:
ВЫБРАТЬ
ТоварыКОтгрузкеОстаткиИОбороты.Номенклатура,
ТоварыКОтгрузкеОстаткиИОбороты.Характеристика,
ТоварыКОтгрузкеОстаткиИОбороты.Склад,
ТоварыКОтгрузкеОстаткиИОбороты.ВРезервеНачальныйОстаток,
ТоварыКОтгрузкеОстаткиИОбороты.ВРезервеПриход,
ТоварыКОтгрузкеОстаткиИОбороты.ВРезервеРасход,
ТоварыКОтгрузкеОстаткиИОбороты.ВРезервеКонечныйОстаток
ИЗ
РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ТоварыКОтгрузкеОстаткиИОбороты
Чтобы увидеть не только резервы, но и реальные продажи, вам потребуется связать набор данных по резервам с набором данных по продажам. Это делается через «Связи наборов данных» в настройках СКД.
Алгоритм действий:
ТоварыНаСкладах.ТоварыКОтгрузке.Связи наборов данных установите связь по полям Номенклатура и Характеристика.ЗаказКлиента из регистра РасчетыСКлиентами.Использование виртуальной таблицы ОстаткиИОбороты позволяет системе 1С самостоятельно оптимизировать выборку данных на основе установленных индексов в базе данных. Вы избавляетесь от необходимости вручную фильтровать «нулевые» остатки, так как стандартные методы СКД делают это гораздо быстрее.
Если вы хотите увидеть «В наличии всего», рекомендуем обращаться к регистру ТоварыНаСкладах, а не пытаться вычислить этот показатель через ТоварыКОтгрузке. Разделение данных по регистрам в СКД позволяет легко настраивать отчет: вы можете выводить информацию о том, сколько товара лежит на складе, сколько из него в резерве и сколько реально доступно для свободной продажи.
Важное примечание: При анализе оборачиваемости всегда учитывайте, что регистр ТоварыКОтгрузке показывает именно факт резервирования. Если товар находится в резерве, но по факту отгрузок не было, период ожидания можно легко вычислить, сравнив дату последнего движения в регистре с текущей датой.