Как вывести неотгруженные заказы покупателей в отчет по валовой прибыли в 1С:Управление торговлей 11?

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

В практической работе торговых компаний часто возникает задача оценки потенциальной или промежуточной прибыли по заказам, которые еще не были отгружены клиентам, но по которым уже получена полная или частичная предоплата. Менеджеры и руководители хотят видеть эти данные в едином отчете по валовой прибыли — для этого подойдёт оперативный дашборд руководителя с показателями продаж и прибыли. Однако при попытке настроить стандартный отчет «Валовая прибыль предприятия» в конфигурации 1С:Управление торговлей 11 (УТ 11) пользователи сталкиваются с тем, что неотгруженные заказы туда просто не попадают.

В этой статье мы подробно разберем, почему типовая конфигурация работает именно так, рассмотрим альтернативные стандартные механизмы оценки рентабельности и предоставим готовое техническое решение для создания собственного отчета на схеме компоновки данных (СКД).

Почему стандартный отчет по валовой прибыли не показывает неотгруженные заказы?

Для начала выясним причину такого поведения системы с точки зрения методологии учета. В 1С:УТ 11 финансовый результат (выручка, себестоимость и, как следствие, валовая прибыль) рассчитывается по методу начисления (по отгрузке).

Это означает следующее:

  1. Выручка признается только тогда, когда право собственности на товар переходит к покупателю. Документом, фиксирующим этот переход, является Реализация товаров и услуг. До момента проведения реализации любые полученные от клиента деньги (даже 100% предоплата) считаются авансом (кредиторской задолженностью компании перед клиентом) и не являются выручкой.
  2. Себестоимость списывается и фиксируется в регистре сведений также в момент проведения документа реализации. До проведения отгрузки точная себестоимость конкретной сделки не определена, так как товар может еще находиться в пути, на складе могут распределяться дополнительные расходы на доставку и т.д.

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

Опасность связывания проведения заказов с оплатой

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

Если заказ клиента не проведен:

Следовательно, проведение заказа и факт его оплаты должны оставаться независимыми процессами.

Вариант 1. Использование стандартного механизма оценки рентабельности

Если вам нужно оценить маржинальность конкретной сделки до того, как она будет отгружена, рассмотрим подробнее типовой инструмент 1С — есть готовый расчет маржинальности в заказе по последней закупке для 1С:УТ 11. В самом документе Заказ клиента предусмотрен встроенный отчет.

Пошаговый алгоритм для просмотра рентабельности заказа:

  1. Откройте нужный документ Заказ клиента — для этой задачи есть расширение с аналитикой цен и наценки в форме заказа 1С:УТ 11.
  2. В верхней панели нажмите кнопку «Отчеты».
  3. Выберите пункт «Оценка рентабельности продажи».

Этот отчет рассчитывает плановую себестоимость и выводит предполагаемую прибыль — для этого также есть анализ рентабельности и прибыли в 1С:УТ 11 без закрытия месяца. Настройку расчета плановой себестоимости для этого отчета можно задать в меню: НСИ и администрирование -> Настройка разделов -> Продажи -> Оптовые продажи -> Правила оценки рентабельности продаж. Здесь можно указать, рассчитывать ли рентабельность по расчетной себестоимости (из закрытия предыдущего месяца) либо по определенному нормативному виду цен (например, «Закупочная»).

Вариант 2. Разработка собственного отчета на СКД по ТЗ

Если стандартный отчет по одному заказу вам не подходит и требуется общая картина по всем менеджерам и заказам (включая оплаченные, но не отгруженные), единственным верным решением будет создание внешнего отчета на базе Системы компоновки данных (СКД) — для этого подойдёт внешний отчет по валовой прибыли по заказам без отгрузки. Разберем по шагам, как спроектировать такой отчет.

Техническое задание (ТЗ) на разработку отчета

Пример реализации запроса для СКД

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


ВЫБРАТЬ
    ЗаказКлиента.Менеджер КАК Менеджер,
    ЗаказКлиента.Ссылка КАК ЗаказКлиента,
    ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
    ЗаказКлиентаТовары.Количество КАК Количество,
    ЗаказКлиентаТовары.Сумма КАК Выручка,
    // Вычисляем плановую себестоимость по последней закупке
    ЕСТЬNULL(ПоследниеЗакупки.ЦенаЗакупки * ЗаказКлиентаТовары.Количество, 0) КАК Себестоимость
ПОМЕСТИТЬ ВТ_НеотгруженныеЗаказы
ИЗ
    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
        ПО ЗаказКлиентаТовары.Ссылка = ЗаказКлиента.Ссылка
    // Соединяем с регистром расчетов, чтобы проверить оплату
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыОстатки
        ПО РасчетыОстатки.АналитикаУчетаПоПартнерам.ОбъектРасчетов = ЗаказКлиента.Ссылка
    // Левое соединение для получения последней цены закупки товара
    ЛЕВОЕ СОЕДИНЕНИЕ (
        ВЫБРАТЬ
            Закупки.Номенклатура КАК Номенклатура,
            МАКСИМУМ(Закупки.Ссылка.Дата) КАК ДатаЗакупки,
            СРЕДНЕЕ(Закупки.Цена) КАК ЦенаЗакупки
        ИЗ
            Документ.ПриобретениеТоваровУслуг.Товары КАК Закупки
        ГРУППИРОВАТЬ ПО
            Закупки.Номенклатура
    ) КАК ПоследниеЗакупки ПО ЗаказКлиентаТовары.Номенклатура = ПоследниеЗакупки.Номенклатура
ГДЕ
    ЗаказКлиента.Проведен = ИСТИНА
    И НЕ ЗаказКлиента.Ссылка В (
        ВЫБРАТЬ РАЗЛИЧНЫЕ
            Реализация.ЗаказКлиента
        ИЗ
            Документ.РеализацияТоваровУслуг КАК Реализация
        ГДЕ
            Реализация.Проведен = ИСТИНА
    )
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеДанные.Менеджер КАК Менеджер,
    ВсеДанные.ЗаказКлиента КАК ЗаказКлиента,
    ВсеДанные.Номенклатура КАК Номенклатура,
    СУММА(ВсеДанные.Количество) КАК Количество,
    СУММА(ВсеДанные.Выручка) КАК Выручка,
    СУММА(ВсеДанные.Себестоимость) КАК Себестоимость,
    СУММА(ВсеДанные.Выручка) - СУММА(ВсеДанные.Себестоимость) КАК ВаловаяПрибыль
ИЗ
    (
        ВЫБРАТЬ * ИЗ ВТ_НеотгруженныеЗаказы
        ОБЪЕДИНИТЬ ВСЕ
        ВЫБРАТЬ * ИЗ ВТ_ОтгруженныеПродажи
    ) КАК ВсеДанные
ГРУППИРОВАТЬ ПО
    ВсеДанные.Менеджер,
    ВсеДанные.ЗаказКлиента,
    ВсеДанные.Номенклатура

Анализ алгоритма и важные доработки

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

  1. Распределение частичной оплаты. В запросе используется простое наличие остатка в регистре РасчетыСКлиентами. Если по заказу пришел аванс в размере 10%, возможно, вы захотите пропорционально уменьшить отражаемую «виртуальную» выручку. Для этого в СКД необходимо будет добавить поле коэффициента оплаты: СуммаОплаты / СуммаДокумента.
  2. Оптимизация получения закупочной цены. Поиск цены по табличной части документов ПриобретениеТоваровУслуг может замедлить работу отчета на больших базах данных. Более производительным решением будет использование цен из регистра сведений ЦеныНоменклатуры по конкретному виду цен (например, «Закупочная»), получая срез последних на дату заказа клиента.
  3. Статусы заказов. Обратите внимание, что в выборку неотгруженных заказов должны попадать только заказы в статусах «К обеспечению» или «К отгрузке». Черновики и несогласованные заказы следует исключать из выборки, чтобы не искажать отчет плановыми данными, которые могут не состояться.

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

← На главную