Почему не выводятся показатели в Универсальном отчете УПП 1.3 и как это исправить?

Программист 1С v8.3 (Обычные формы) Управленческий учет Промышленность, строительство и АПК
← На главную

При работе с конфигурацией «Управление производственным предприятием» (УПП 1.3) программисты часто сталкиваются с необходимостью доработки типового Универсального отчета. Одной из самых распространенных проблем является ситуация, когда после подстановки собственного запроса в модуль объекта отчет выводит только группировки (например, номенклатуру), но колонки с числовыми показателями (количество, стоимость) остаются пустыми или вовсе отсутствуют в списке доступных полей. Разберем детально, почему это происходит и как правильно настроить отчет, чтобы он видел данные.

Причина 1: Некорректная структура запроса и отсутствие секции ИТОГИ

Основной механизм Универсального отчета в УПП 1.3 базируется на объекте ПостроительОтчета. Этот объект анализирует текст запроса и автоматически формирует состав доступных полей, группировок и показателей. Однако у ПостроительОтчета есть важная особенность: он не считает любое числовое поле «показателем» (ресурсом) по умолчанию. Чтобы поле попало в категорию ресурсов, которые можно суммировать в области данных, оно должно быть явно описано в секции ИТОГИ.

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


ВЫБРАТЬ
    Затраты.Номенклатура КАК Номенклатура,
    Затраты.КоличествоОстаток КАК Количество
ИЗ
    РегистрНакопления.ЗатратыНаВыпускПродукции.Остатки(&Период, ) КАК Затраты

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


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

Именно наличие конструкции ИТОГИ СУММА(...) дает сигнал Универсальному отчету, что данное поле является ресурсом. После этого оно появится в настройках на вкладке «Показатели».

Причина 2: Использование временных таблиц в пакете запросов

Выясним еще один важный нюанс: можно ли использовать временные таблицы внутри Универсального отчета? Ответ — да, но с существенным ограничением. ПостроительОтчета, встроенный в УПП 1.3, умеет работать только с одним пакетом запросов и не поддерживает использование внешнего МенеджерВременныхТаблиц.

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

  1. Все временные таблицы создаются и используются внутри одного текста запроса (через символ ;).
  2. Финальная выборка, из которой ПостроительОтчета будет забирать данные, является последней в пакете.
  3. Секция ИТОГИ прописана именно для этой последней выборки.

Проанализируем пример кода с временной таблицей:


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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Данные.Номенклатура,
    ВТ_Данные.КоличествоВТ КАК Количество
ИЗ
    ВТ_Данные КАК ВТ_Данные
ИТОГИ
    СУММА(Количество)
ПО
    ОБЩИЕ

Причина 3: Кэширование настроек в пользовательском режиме

Часто бывает так, что программист исправил код запроса в конфигураторе, добавил ИТОГИ, но при запуске отчета ничего не изменилось. Посмотрим на причину этого поведения: 1С сохраняет пользовательские настройки отчетов в системном хранилище. Если вы ранее уже открывали этот отчет, Универсальный отчет при открытии восстанавливает старую структуру полей из сохраненных настроек, игнорируя изменения в коде.

Чтобы изменения вступили в силу, выполним следующие действия в пользовательском режиме:

  1. Откройте форму настроек отчета (кнопка «Настройка...»).
  2. Нажмите на кнопку «Установить стандартные настройки» (значок с желтым кольцом или соответствующая кнопка). Это принудительно заставит ПостроительОтчета перечитать структуру запроса из модуля объекта.
  3. Перейдите на вкладку «Показатели» и проверьте, появились ли ваши новые поля в списке. Убедитесь, что напротив них стоят флажки.

Причина 4: Программное описание структуры полей

В сложных случаях Универсальному отчету может потребоваться «помощь» в распознавании полей. В модуле объекта отчета за заполнение доступных полей отвечает процедура УстановитьНачальныеНастройки(). Проанализируем ситуацию: если поле добавлено в запрос, но не появляется в списке, его можно добавить в коллекцию мСтруктураПолей вручную.

Посмотрим на пример того, как программно зарегистрировать показатель:


// В процедуре УстановитьНачальныеНастройки()
УниверсальныйОтчет.ДобавитьПоказатель("Количество", "Количество (ед.)", Истина, "ЧЦ=15; ЧДЦ=3");

Здесь "Количество" — это имя поля из вашего запроса (алиас), а "Количество (ед.)" — заголовок, который увидит пользователь. Параметр Истина указывает на то, что поле будет включено в отчет по умолчанию.

Причина 5: Специфика виртуальных таблиц регистра «Затраты на выпуск продукции»

Регистр Затраты на выпуск продукции в УПП 1.3 достаточно специфичен. Если вы используете виртуальную таблицу .Обороты или .ОстаткиИОбороты, обратите внимание на следующие моменты:

Разберем, как правильно передавать условия в виртуальные таблицы:


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

Итоги и рекомендации

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

  1. Проверьте наличие секции ИТОГИ с использованием агрегатной функции СУММА по всем числовым полям в самом конце запроса.
  2. Если используете временные таблицы, убедитесь, что они находятся в одном пакете и финальный запрос содержит итоги.
  3. В пользовательском режиме обязательно сбросьте настройки до стандартных, чтобы обновить кэш метаданных ПостроителяОтчета.
  4. Убедитесь, что на вкладке «Показатели» в настройках отчета выбраны нужные колонки.
  5. Проверьте, не ограничивают ли результат пустые отборы по виду учета или организации.

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

← На главную