Как в отчете Валовая прибыль в 1С:УТ 11 учесть расходы на доставку по клиенту без задвоения итогов в СКД?

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

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

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

Причины некорректного расчета данных в СКД

Проанализируем механику возникновения ошибки при попытке объединить продажи и расходы в одном отчете:

  1. Разная детализация (гранулярность) соединяемых данных. Данные по продажам из регистра ВыручкаИСебестоимостьПродаж детализированы до уровня ЗаказКлиента и Номенклатура. Данные по дополнительным затратам берутся с аналитикой только до Партнер и Организация. При использовании операции ЛЕВОЕ СОЕДИНЕНИЕ в тексте одного SQL-запроса сумма расхода партнера дублируется на каждую строку номенклатуры, проданную этому клиенту.
  2. Особенности вычисления вычисляемых полей и ресурсов. Если пользовательские формулы для новой себестоимости и рентабельности заданы в Вычисляемых полях, СКД рассчитывает их на самом детальном уровне (для каждой номенклатурной позиции, где расход уже продублировался), а затем суммирует по иерархии группировок, что приводит к многократному умножению итоговых затрат.
  3. Особенность регистра «Прочие расходы». При закрытии месяца регистр накопления ПрочиеРасходы полностью списывается и закрывается при распределении затрат на финансовый результат. Если отчет обращается к остаткам регистра, то после выполнения регламентных процедур закрытия периода данные о расходах перестанут попадать в отчет.

Способ 1. Разделение запросов через «Связи наборов данных» в СКД

Рассмотрим наиболее правильный способ интеграции данных разного уровня детализации средствами схемы компоновки данных без прямого соединения таблиц в SQL-запросе.

Разберем по шагам настройку схемы компоновки данных:

  1. Создание отдельных наборов данных. В схеме создаем два независимых набора данных типа «Запрос»:
    • НаборДанныхПродажи — выбирает данные из регистра ВыручкаИСебестоимостьПродажОбороты с полями Организация, Партнер, ЗаказКлиента, Номенклатура, Выручка, Себестоимость.
    • НаборДанныхРасходы — выбирает обороты расходов по полям Организация, Партнер, СуммаРасходов.
  2. Настройка связи наборов данных. Переходим на вкладку Связи наборов данных и связываем НаборДанныхПродажи (источник) с НаборДанныхРасходы (приемник) по полям Организация и Партнер.
  3. Настройка ресурсов СКД. Переходим на вкладку Ресурсы. Чтобы расходы не выводились в строках номенклатуры и заказов, настраиваем поле СуммаРасходов с явным указанием уровней группировки: Сумма(СуммаРасходов) В колонке Рассчитывать по... указываем только группировки Партнер, Организация и ОбщийИтог. Для группировок ЗаказКлиента и Номенклатура расчет оставляем отключенным.
  4. Расчет итоговых показателей. Формулы скорректированной себестоимости и рентабельности настраиваем не в вычисляемых полях, а на вкладке Ресурсы для соответствующих группировок. Для детальных записей и заказов себестоимость будет равна базовой, а на уровне партнера к ней прибавится СуммаРасходов.

Способ 2. Использование агрегатных функций по массиву группировок в СКД

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

Рассмотрим пример настройки выражения ресурса на вкладке Ресурсы для поля расходов:


Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаРасходов)", "Партнер"))

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

Способ 3. Использование типовой методологии учета затрат в 1С:УТ 11

Проанализируем типовые возможности программы, которые позволяют избежать нетиповых доработок отчетов.

  1. Учет расходов с аналитикой до заказа. В справочнике СтатьиРасходов для доставки настраиваем:
    • Вариант распределения: На финансовый результат (расходы текущего периода).
    • Тип расходов: Расходы на продажу.
    • Вид аналитики расходов: Заказ клиента или Реализация товаров и услуг.
    При таком подходе документ ПриобретениеУслугИПрочихАктивов относит расходы напрямую на конкретную сделку, что обеспечивает одинаковую гранулярность данных с продажами.
  2. Использование типовых финансовых отчетов. Отчет Валовая прибыль предназначен исключительно для оценки прямых показателей (выручка, базовая себестоимость, автоматические скидки). Для комплексного анализа прибыльности с учетом доставки, коммерческих и управленческих расходов в 1С:УТ 11 предназначен типовой отчет Доходы и расходы предприятия или Финансовые результаты, где данные распределяются автоматически в рамках процедуры ЗакрытиеМесяца.
← На главную