При доработке стандартных отчетов в конфигурации УПП (Управление производственным предприятием) многие разработчики сталкиваются с тем, что простое добавление вычисляемых полей в схему компоновки данных (СКД) не приводит к их появлению в интерфейсе программы. Разберем, почему так происходит и как правильно внедрить новые показатели в отчет.
Архитектура «Универсального отчета» в УПП была спроектирована задолго до того, как СКД стала стандартом. В данной конфигурации отчеты формируются программно через специальный объект УниверсальныйОтчет. Код, отвечающий за структуру отчета, жестко прописан в модуле объекта (чаще всего в процедуре установки начальных настроек).
Когда вы добавляете поле в СКД, вы лишь расширяете возможности движка данных, но система «не знает», что это поле нужно вывести на экран. Чтобы поле стало доступным для пользователя во вкладке «Показатели», его необходимо «зарегистрировать» в коде с помощью специальных методов, которые модифицируют текст запроса и структуру настроек.
Чтобы добавить новые ресурсы, например ВесИзделия и ОбъемИзделия, выполните следующие действия в модуле объекта отчета:
ДобавитьПолеРесурс для определения вычисляемого значения.ДобавитьПоказатель.УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина).Рассмотрим, как правильно прописать добавление нового ресурса. Допустим, нам нужно рассчитать вес изделия на основе существующих данных. Мы используем следующую конструкцию:
// Добавление ресурса в универсальный отчет
УниверсальныйОтчет.ДобавитьПолеРесурс(
"ВесИзделия",
"ИсточникДанных.Количество * ИсточникДанных.Номенклатура.Вес",
"Вес изделий"
);
// Регистрация показателя для отображения на форме
УниверсальныйОтчет.ДобавитьПоказатель(
"ВесИзделия",
"Вес",
Ложь,
"ЧЦ=15; ЧДЦ=3",
"ДопПараметры",
"Вес изделий (в кг)"
);
Разберем параметры метода ДобавитьПоказатель подробнее:
ДобавитьПолеРесурс.Ложь) — признак того, нужно ли включать поле в отчет автоматически при открытии.ЧЦ=15; ЧДЦ=3).Если ваши новые поля зависят от данных, которых нет в базовом запросе отчета, вам потребуется вмешаться в основной текст запроса. В «Универсальном отчете» это часто реализуется через добавление выражений в конструктор запроса или через дополнительные поля в схеме, если отчет поддерживает динамическое присоединение.
Помните, что порядок вызовов критически важен. Процедура УстановитьНачальныеНастройки(Истина) считывает все ранее добавленные программно показатели и формирует на их основе пользовательский интерфейс. Если вы добавите регистрацию после этой строки, изменения просто не попадут на форму.
Таким образом, для успешной модификации отчета в УПП необходимо придерживаться «двойного» подхода: сначала создать логику расчета в коде через методы объекта УниверсальныйОтчет, а затем обеспечить доступность этого поля через регистрацию в качестве показателя.