Как добавить новые ресурсы в «Универсальный отчет» в конфигурации УПП?

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

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

Почему изменения в СКД не работают?

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

Когда вы добавляете поле в СКД, вы лишь расширяете возможности движка данных, но система «не знает», что это поле нужно вывести на экран. Чтобы поле стало доступным для пользователя во вкладке «Показатели», его необходимо «зарегистрировать» в коде с помощью специальных методов, которые модифицируют текст запроса и структуру настроек.

Пошаговое руководство по добавлению ресурсов

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

  1. Откройте модуль объекта и найдите процедуру, отвечающую за настройку отчета (обычно это часть процесса инициализации параметров).
  2. Используйте метод ДобавитьПолеРесурс для определения вычисляемого значения.
  3. Зарегистрируйте созданный ресурс как показатель с помощью метода ДобавитьПоказатель.
  4. Убедитесь, что вызовы этих методов стоят до вызова УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина).

Примеры программного кода

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


// Добавление ресурса в универсальный отчет
УниверсальныйОтчет.ДобавитьПолеРесурс(
    "ВесИзделия", 
    "ИсточникДанных.Количество * ИсточникДанных.Номенклатура.Вес", 
    "Вес изделий"
);

// Регистрация показателя для отображения на форме
УниверсальныйОтчет.ДобавитьПоказатель(
    "ВесИзделия", 
    "Вес", 
    Ложь, 
    "ЧЦ=15; ЧДЦ=3", 
    "ДопПараметры", 
    "Вес изделий (в кг)"
);

Разберем параметры метода ДобавитьПоказатель подробнее:

Важные замечания

Если ваши новые поля зависят от данных, которых нет в базовом запросе отчета, вам потребуется вмешаться в основной текст запроса. В «Универсальном отчете» это часто реализуется через добавление выражений в конструктор запроса или через дополнительные поля в схеме, если отчет поддерживает динамическое присоединение.

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

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

← На главную