Как в УТ 11.4 построить отчет по выручке и себестоимости, работающий до закрытия месяца

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

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

Анализируем причину отсутствия данных

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

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

Метод 1: Использование предварительного расчета и регистра «Стоимость товаров»

Мало кто знает, но в УТ 11 существует специальный технический регистр — РегистрСведений.СтоимостьТоваров. Он предназначен для хранения результатов предварительного расчета себестоимости. Если в вашей базе настроено фоновое задание «Расчет себестоимости», данные в нем будут актуализироваться оперативно.

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


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

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

Метод 2: Оценка рентабельности по нормативному виду цен

Если расчетная себестоимость еще не готова или не заполнена, можно использовать механизм оценки рентабельности по плановым ценам. Это часто применяется в отделах продаж для оперативного контроля маржинальности сделки еще до момента отгрузки. Мы можем получить срез последних цен по конкретному виду цены (например, «Закупочная» или «Трансферная»).

Рассмотрим фрагмент запроса для получения плановых цен:


ВЫБРАТЬ
    ЦеныПлановые.Номенклатура,
    ЦеныПлановые.Характеристика,
    ЦеныПлановые.Цена * КурсыВалют.Курс / КурсыВалют.Кратность КАК ЦенаВВалютеУчета
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ),
        ВидЦены = &НормативныйВидЦен
        И (Номенклатура, Характеристика) В (ВЫБРАТЬ Т.Номенклатура, Т.Характеристика ИЗ ТоварыДокумента КАК Т)
    ) КАК ЦеныПлановые
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, ) КАК КурсыВалют
    ПО (ИСТИНА)

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

Метод 3: Использование регистра «Себестоимость товаров»

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

Разберем алгоритм построения такого запроса:

  1. Выбираем данные о продажах из регистра ВыручкаИСебестоимостьПродаж (получаем количество и выручку).
  2. Присоединяем данные из регистра СебестоимостьТоваров по ключу аналитики номенклатуры.
  3. Если записи в регистре себестоимости уже имеют стоимостную оценку (приход от поставщика уже оформлен), мы увидим эти цифры.

Проанализируем ситуацию с Интеркампани. Если ваша компания продает товар, который числится на другой организации внутри холдинга, себестоимость в отчете по организации-продавцу будет нулевой до тех пор, пока не будет оформлен документ «Передача товаров». В оперативном отчете это нужно учитывать, суммируя остатки и движения по всем организациям сразу, чтобы видеть общую картину по группе компаний.

Рекомендации по разработке запроса

Чтобы ваш отчет «бился» с типовым после закрытия месяца, придерживайтесь следующих правил:

Использование регистра СтоимостьТоваров в сочетании с ВыручкаИСебестоимостьПродаж — это «золотая середина» для разработки оперативного отчета в УТ 11.4. Это позволяет получить данные, максимально приближенные к итоговому расчету, не перегружая систему тяжелыми вычислениями партий в реальном времени.

← На главную