В практике работы с 1С:Управление производственным предприятием (УПП) 1.3 и другими конфигурациями на обычных формах часто возникает задача анализа «чистых» движений товара. Стандартная «Ведомость по товарам на складах» фиксирует любые движения по одноименному регистру накопления. Если товар поступил от поставщика, а затем трижды перемещался между складами внутри компании, в колонках прихода и расхода суммарно отобразятся цифры, значительно превышающие реальный объем закупленного товара. Это явление называют «раздутыми оборотами». Если подобные ограничения системы мешают аналитике, изучите раздел с решениями для перехода из 1С:УПП на более современные конфигурации.
Разберем подробно, почему так происходит, и какими способами можно добиться корректного отображения данных для бизнеса, не нарушая при этом математическую целостность остатков.
Основная причина кроется в архитектуре регистра ТоварыНаСкладах. Каждое перемещение — это две записи в регистре: «Расход» с одного склада и «Приход» на другой. Если менеджер строит отчет в целом по компании (без детализации до складов), система просто суммирует все записи. В результате внутренние обороты попадают в общую статистику, искажая показатели эффективности закупок и продаж.
Проанализируем ситуацию: если просто исключить документы ПеремещениеТоваров из запроса или через отбор, мы получим верные обороты, но катастрофически неверные остатки по конкретным складам. На складе-отправителе товар будет «висеть» бесконечно, а на складе-получателе после продажи возникнет отрицательный остаток («минус»), так как приход по перемещению был скрыт.
Если задача стоит не в изменении цифр, а в удобстве анализа, рассмотрим вариант с «подсветкой» внутренних движений. Это позволит пользователю видеть общую картину, но сразу отделять перемещения от внешних поступлений и отгрузок. Чтобы автоматизировать работу с внешними заказами, можно настроить интеграцию 1С:УПП с маркетплейсами для передачи заказов и остатков.
Регистратор ССЫЛКА Документ.ПеремещениеТоваров.КоличествоПриход и КоличествоРасход.Этот метод самый безопасный, так как он не меняет итоговые суммы и остатки, предотвращая панику у бухгалтерии из-за «минусов» на складах.
Если бизнес-аналитику требуются именно «чистые» цифры прихода/расхода в компанию, мы можем модифицировать запрос СКД. Разберем, как реализовать это через добавление вычисляемого поля или условия.
В схеме компоновки данных можно добавить поле ЭтоПеремещение, используя следующую конструкцию в запросе:
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЭтоПеремещение
После добавления этого поля в набор данных, пользователь сможет самостоятельно накладывать отбор ЭтоПеремещение Равно Ложь. Однако помните о «минусах» на складах! Данный метод применим только в том случае, если отчет строится без группировки по складам (только по номенклатуре или организации в целом).
Выясним причину, по которой менеджеры обращаются к складскому отчету. Если цель — увидеть, сколько товара «пришло в компанию» и «ушло из компании», то использование регистра ТоварыНаСкладах в принципе некорректно. Для этих целей в 1С:УПП существуют регистры Закупки и Продажи.
Проанализируем возможность создания комплексного отчета. Мы можем объединить данные в одном СКД-отчете:
ТоварыНаСкладах.Остатки на начало периода.Закупки. Там фиксируются только внешние поступления от поставщиков.Продажи. Там фиксируются только реализации клиентам.ТоварыНаСкладах.Остатки на конец периода.При таком подходе колонка «Приход» не будет включать перемещения, а конечный остаток останется верным, так как он берется напрямую из итогов регистра остатков, который учитывает все документы, включая скрытые перемещения. Для быстрого развертывания подобной схемы подойдёт готовый отчет по закупкам и продажам на СКД.
Рассмотрим вариант доработки схемы запроса, который позволит выводить и перемещения, и закупки, но в разных колонках. Это самый информативный вид отчета для руководителя склада.
В тексте запроса СКД для виртуальной таблицы ОстаткиИОбороты необходимо настроить выборку так, чтобы приход разделялся по условию:
ВЫБОР
КОГДА НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
ИНАЧЕ 0
КОНЕЦ КАК ПриходВнешний,
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
ИНАЧЕ 0
КОНЕЦ КАК ПриходВнутренний
Аналогично настраиваются поля для расхода. Посмотрим на результат: в отчете появятся 4 колонки вместо 2. Итог по внешним колонкам даст реальную динамику оборота компании, а наличие внутренних колонок позволит сохранить баланс и объяснить, откуда на складе взялся товар, если закупок по нему не было.
При работе с ОстаткиИОбороты всегда помните о производительности. Если база большая, использование условий ССЫЛКА в ГДЕ (на уровне параметров виртуальной таблицы) может замедлить отчет. Старайтесь выносить такие проверки в выборку полей или использовать предварительно отобранные таблицы документов.
Также проверьте, используются ли в вашей системе другие документы, делающие внутренние движения (например, КомплектацияНоменклатуры или КорректировкаСерийИХарактеристик). Если да, их также следует включить в условия исключения, чтобы получить максимально «чистый» отчет по закупкам и продажам.