Почему в отчете «Валовая прибыль» не отображается себестоимость по заказу и как это исправить?

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

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

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

Анализ ситуации: где искать данные?

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

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

Причины исчезновения себестоимости на уровне заказа

Выясним причину, почему данные «теряются» при подъеме на уровень заказа клиента:

  1. Особенности выражений ресурсов в СКД: в типовых схемах отчетов формулы расчета показателей (например, себестоимости или валовой прибыли) могут быть составными и включать в себя стоимость закупки, дополнительные расходы, транспортные и постатейные затраты. Если одна из составляющих принимает значение NULL и разработчики не обернули ее в функцию ЕСТЬNULL(), результат всей суммы на уровне общей группировки становится неопределенным (NULL), то есть строка остается визуально пустой.
  2. Ограничения расчета по группировкам: на вкладке «Ресурсы» схемы компоновки данных для поля Себестоимость может быть жестко ограничен список группировок (колонка «Рассчитывать по…»). Если группировка Заказ клиента не попадает в условия расчета ресурса, итог по ней рассчитан не будет.
  3. Неоднородность строк документа: если реализация оформлялась сразу по нескольким заказам или в ней присутствуют сопутствующие услуги/доставка, не имеющие материальной себестоимости, при свертке строк без уникального идентификатора партии алгоритм отчета может давать сбой.

Способ 1. Быстрое решение в пользовательском режиме (добавление регистратора)

Рассмотрим самое простое и действенное решение, которое не требует снятия конфигурации с поддержки или изменения кода программы. Чтобы заставить СКД рассчитать итоги по формуле корректно, достаточно разбить выборку на детальные записи по первичному документу.

  1. Открываем отчет Валовая прибыль (или Выручка и себестоимость продаж).
  2. Нажимаем кнопку Настройки и переключаемся в режим Расширенный.
  3. Переходим на вкладку Структура. По умолчанию в дереве группировок указана строка Заказ клиента.
  4. Выделяем группировку Заказ клиента, нажимаем правой кнопкой мыши и выбираем пункт Добавить.
  5. В качестве подчиненной группировки выбираем поле Регистратор (или добавляем Детальные записи).
  6. Нажимаем кнопку Закрыть и сформировать.

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

Способ 2. Проверка заполнения реквизитов табличной части РТУ

Проанализируем сам документ реализации. Если в настройках параметров учета включена опция оформления продаж по нескольким заказам, колонка Заказ клиента отображается не только в шапке документа, но и в каждой строке табличной части Товары.

  1. Открываем форму документа Реализация товаров и услуг.
  2. Через меню Еще — Изменить форму проверяем, чтобы в табличной части «Товары» был включен флажок видимости для поля Заказ.
  3. Убеждаемся, что в каждой товарной позиции поле заказа заполнено корректно и совпадает с заказом в шапке документа. Если хотя бы в одной строке заказ очищен, движения в регистре запишутся без привязки к заказу, из-за чего общая сумма в отчете по заказам не соберется.
  4. После исправления строк перепроводим документ и повторно запускаем расчет себестоимости через закрытие месяца.

Способ 3. Сброс настроек варианта отчета

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

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

Способ 4. Доработка схемы в расширении (для программистов)

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

  1. Добавляем отчет в расширение и открываем основную схему компоновки данных.
  2. Переходим на вкладку Ресурсы.
  3. Находим ресурс Себестоимость (и связанные с ним показатели Валовая прибыль, Рентабельность).
  4. Проверяем выражение расчета: все потенциально пустые поля необходимо защитить функцией проверки на значение NULL: Сумма(ЕСТЬNULL(Стоимость, 0)) + Сумма(ЕСТЬNULL(ДопРасходы, 0))
  5. В колонке Рассчитывать по… очищаем список группировок, чтобы ресурс рассчитывался для всех уровней иерархии, либо явно добавляем туда поле ЗаказКлиента.

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

← На главную