Часто при разработке отчетов на СКД (Система компоновки данных) возникает необходимость отобразить данные, которые не связаны между собой логически или физически в рамках одного запроса. Например, вам нужно вывести список продаж в верхней части отчета, а ниже — сводную информацию по складским остаткам, причем источники этих данных принципиально разные. Давайте разберем, как реализовать такую задачу правильно, избегая ошибки «Поле не найдено».
Когда вы добавляете второй набор данных в схему компоновки, СКД по умолчанию пытается сопоставить все поля из всех наборов. Если Автозаполнение включено, система ищет связи между ними. При отсутствии общих полей или при попытке вывести поля из «чужого» набора в структуре, которая к нему не относится, система выдает ошибку. Чтобы этого избежать, мы должны четко разделить области вывода данных.
Первым делом перейдем в конструктор схемы компоновки данных. На вкладке «Наборы данных» создадим два независимых НаборДанныхЗапрос. Важно помнить следующее:
Связи наборов данных, если ваши таблицы не должны пересекаться.После того как данные подготовлены, перейдем на вкладку «Настройки». Здесь кроется главный секрет успешного отображения двух таблиц.
Автозаполнение (в свойствах отчета или конкретной группировки), чтобы СКД не пыталась автоматически сгруппировать поля, которые к этому не готовы.Набор данных. Выберите соответствующий набор для каждой таблицы.СКД будет знать: при отрисовке первой группировки использовать только поля первого набора, а при отрисовке второй — только второго.Так как мы отключили автозаполнение, СКД не будет выводить поля автоматически. Нам необходимо вручную перетащить нужные поля из окна доступных полей в список Выбранные поля для каждой из созданных нами группировок. Это гарантирует, что система не попытается использовать поле из первого запроса в таблице второго.
Если структура вашего отчета становится чрезмерно сложной, а количество наборов данных растет, рекомендуем рассмотреть использование механизма Вложенный отчет. Для изучения реализации такого подхода подойдёт пример отчета с двумя разными схемами СКД.
В чем преимущество данного метода:
Если при формировании отчета система продолжает «ругаться» на поле, проанализируйте следующее:
Отладка. Это позволит видеть реальные ошибки системы при выполнении запросов.Помните, что СКД — это мощный инструмент, который требует дисциплины в настройках. При правильном разделении наборов данных и указании источников для каждой группировки, вы сможете выводить любое количество независимых таблиц в рамках одного отчета.