При настройке отчетов в системе компоновки данных (СКД) пользователи часто сталкиваются с ситуацией, когда попытка создать новое поле через механизм пользовательских полей приводит к ошибке «поле не найдено». Давайте разберем, почему это происходит и как правильно решить задачу вывода выражения, основанного на нескольких реквизитах одного документа.
Основная причина, по которой система не видит ваши реквизиты, кроется в фундаментальном различии между пользовательскими и вычисляемыми полями. Когда вы работаете в пользовательском режиме, механизм пользовательских полей ограничен текущим контекстом данных, которые уже были выбраны в основной запрос отчета.
Если в вашем отчете запрос сформирован по принципу ВЫБРАТЬ * ИЗ Документ, система не всегда может корректно проанализировать метаданные для пользовательского интерфейса. Пользовательские поля предназначены для простых арифметических или строковых операций над данными, которые уже «извлечены» из базы данных и представлены в отчете. Если реквизит не был явно включен в структуру набора данных при разработке отчета, пользовательский интерфейс СКД «не знает» о его существовании.
Важно различать два подхода к доработке отчетов:
Если вы столкнулись с невозможностью использовать реквизит, самым верным и профессиональным решением будет перенос логики в вычисляемые поля самой схемы компоновки данных. Рассмотрим, как это сделать правильно:
РазницаРеквизитов).
Реквизит1 - Реквизит2
После этого шага движок СКД получит прямую инструкцию по вычислению. Так как вы добавили поле непосредственно в схему, система сможет корректно сопоставить эти реквизиты с объектом документа, и ошибка «поле не найдено» исчезнет.
При разработке отчетов старайтесь избегать конструкции ВЫБРАТЬ *. Хотя это кажется удобным способом получить все данные сразу, такой подход:
СКД вынуждена загружать избыточные данные.Если вы хотите, чтобы в будущем пользователи могли самостоятельно манипулировать полями, разработчику отчета необходимо заранее включить все важные реквизиты в список «Доступных полей» набора данных. Если же задача носит разовый характер или требует сложной логики, использование вычисляемых полей в схеме — это единственный надежный и профессиональный метод.
Используя этот подход, вы переводите логику отчета из уровня «визуальных выражений» на уровень «обработки данных», что гарантирует отсутствие ошибок доступа к объектам метаданных и повышает общую производительность вашего отчета.