Ошибки (?) работы СКД

Публикация № 1069723

Программирование - Практика программирования

0
СКД неверно ставит отборы?

Столкнулся с тем, что при определенных условиях СКД формирует не совсем ожидаемый результат.

Вот для примера отчет (схема компоновки).

 
Схема отчета

 

Установлен отбор на дату рождения.

При формировании отчета получаем результат (Скриншот: Неверный результат)

Но вот 5 строк объясняется тем, что отбор накладывается на первую таблицу, где встречается поле с этим именем

Т.е. отбор накладывается только на таблицу ВТ_1, а не на результат запроса

Чтобы отбор накладывался на результат, надо у результата запроса на вкладке "Компоновка данных" на вкладке условия добавить это поле (Скриншот: Необходимая настройка для отбора)

Проверялось на релизах 8.3.13.1513,  8.3.14.1640.

0

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. genayo 31.05.19 07:53 Сейчас в теме
Да, всё правильно, для получения предсказуемых результатов желательно отборы настраивать для всех участвующих таблиц в явном виде.
2. akim2040 5 31.05.19 08:04 Сейчас в теме
При знакомстве с СКД эту "ошибку", которая называется оптимизатор запроса, рано или поздно встречаешь.
Далее уже на автомате ставишь всегда нужные условия на компоновке, да и автозаполнение полей не используешь
A_Max; vvp117; +2 Ответить
3. VmvLer 31.05.19 08:52 Сейчас в теме
СКД "ловит" отбор по имени поля которое попадает в набор данных, а именно "ДатаРождения"

замените синоним "ДатаРожденияТаб2" на "ДатаРождения" и все станет чики-пуки.
4. skydivespb 5 31.05.19 09:32 Сейчас в теме
(3)Да как решить эту проблему я знаю. Дело в том, что во второй таблице вообще может не быть даты рождения. Пример показывает лишь то, что возможны случаи, что отбор накладывается не на результат. И как сделать так, чтобы отчет выводил предсказуемые результаты.
5. dhurricane 31.05.19 09:41 Сейчас в теме
(4)
предсказуемые результаты
Чтобы ответить на этот вопрос, необходимо сперва понять, а что Вы подразумеваете под предсказуемостью? Как видите, для некоторых участников сообщества результат вполне предсказуем. Почему СКД накладывает отбор не на результат, а на промежуточные таблицы? Потому что разработчики СКД решили, что такой сценарий более распространен и более оправдан. И тут мне трудно спорить с ними. Ну а что с этим делать, если такой подход не устраивает? "Объяснять" СКД, где действительно нужно устанавливать отборы с помощью выражений в фигурных скобках, иногда отключать автозаполнение наборов данных.
A_Max; vvp117; +2 Ответить
6. vvp117 02.06.19 05:38 Сейчас в теме
(4) Забудьте о флажке "Автозаполнение полей" или будете подобные артефакты ловить постоянно. Контролируйте доступные для отбора поля через {}, тогда всё будет прозрачно для вас и для СКД
Оставьте свое сообщение