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