|
Один запрос. Результат консоли <> Результат в СКД | ☑ | ||
---|---|---|---|---|
0
dudell
07.06.16
✎
17:47
|
Привет всем. С проблемой столкнулся. Вот такой запросик в консоли и в СКД выдает разные результаты. Происходит подсчет строк номенклатуры из документа. А затем происходит группировка по пользователю. Консоль выдает верный результат. А в СКД отражаются данные, будто строчки помеченной * в запросе нет. Т.е. будто в первом подзапросе различные строки номенклатуры сгруппировывались только по пользователю. Здесь нет виртуальных таблиц. Кто-нибудь сталкивался с подобным поведением? Версия платформы 8.3.7.2008
ВЫБРАТЬ ЗаписиТСД.Пользователь, ЗаписиТСД.ИсходныйДокумент*, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаписиТСД.Номенклатура) КАК СтрокНоменклатур ПОМЕСТИТЬ ВТ_Данные ИЗ РегистрСведений.ЗаписиТСД КАК ЗаписиТСД ГДЕ ЗаписиТСД.ДатаСканирования МЕЖДУ &дАТА1 И &дАТА2 И ЗаписиТСД.ГруппаТСД = ЗНАЧЕНИЕ(Перечисление.ГруппыТСД.ПроверкаИномарки) СГРУППИРОВАТЬ ПО ЗаписиТСД.Пользователь, ЗаписиТСД.ИсходныйДокумент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Данные.Пользователь, СУММА(ВТ_Данные.СтрокНоменклатур) КАК СтрокНоменклатур ИЗ ВТ_Данные КАК ВТ_Данные СГРУППИРОВАТЬ ПО ВТ_Данные.Пользователь |
|||
1
Nuobu
07.06.16
✎
17:50
|
(0) СКД удаляет эту строчку, т.к. она НЕ используется в результирующем запросе.
|
|||
2
profitmaker
07.06.16
✎
17:50
|
А ты посмотри структуру отчета в СКД, если там это поле не выбрано, то СКД прежде чем выполнить запрос в момент когда происходит КомпоновщикМакета.Выполнить() меняет сам запрос в Наборе данных, и просто напросто выкинет это поле из запроса, потому как оно в отчете не используется.
|
|||
3
mehfk
07.06.16
✎
17:51
|
Воспользуйся консолью СКД, которая покажет тебе реальный запрос.
|
|||
4
profitmaker
07.06.16
✎
17:51
|
Чтобы этого избежать, если используешь Автозаполнение, необходимо у роли этого поля в СКД поставить птичку "Обязательное". Тогда СКД его выкидывать не будет.
|
|||
5
xxTANATORxx
07.06.16
✎
17:51
|
(0)это нормально, просто фича
в чем вопрос? |
|||
6
dudell
07.06.16
✎
19:46
|
(4) Запрос состоит из временной таблицы, (где я подготавливаю данные и сворачиваю ресурс по двум измерениям) и итогового подзапроса (где я сворачиваю ресурс только по одному измерению). В СКД соответственно отображаются данные итогового подзапроса. Там присутствует только поля Пользователь и СтрокНоменклатур. ИсходныйДокумент мы там не отображаем. Соответственно как я могу поставить для этого поля галочку "Обязательное"?
|
|||
7
dudell
07.06.16
✎
20:18
|
(2)(3) Действительно, в консоли СКД в итоговом запросе формируемом системе в первом моем подзапросе поле ИсходныйДокумент удалено. О_о. Только я не понял - как указать системе что это нужное поле и чтобы она его не трогала?
|
|||
8
dudell
07.06.16
✎
21:10
|
В общем, насколько я понял, нужно каким-то образом эти незначимые для итогового отображения поля протащить до итогового подзапроса и тогда они отобразятся в наборе данных и тогда можно будет установить для них флаг автозаполнения "Обязательный". В моем случае например в итоговом подзапросе добавить агрегатную функцию Максимум(ИсходныйДокумент)
Но это идиотизмом попахивает. |
|||
9
vicof
08.06.16
✎
01:07
|
И зачем тебе этот исходный документ, если ты его все равно не выводишь?
|
|||
10
dudell
08.06.16
✎
08:52
|
(9) В разрезе этого измерения в первой таблице высчитываются количества различных строк. Это измерения влияет на итоговый результат агрегатной функции первого подзапроса.
|
|||
11
1dvd
08.06.16
✎
08:57
|
(10) не должен влиять. Это не виртуальная таблица.
У тебя скорее всего не попадают Документы на конец дня :59:59 |
|||
12
1dvd
08.06.16
✎
08:58
|
Хотя, если он и из группировок удаляет, то влияет, да
|
|||
13
catena
08.06.16
✎
09:09
|
(10)Добавь документ во второй запрос, поставь ему обязательность, группируй при выводе
|
|||
14
dudell
08.06.16
✎
13:26
|
(13) Спасибо. В посте (8) я уже итог написал. Остается вопрос только WTF? Что за неожиданное поведение системы такое? Как она может удалять поле, которое является измерением по групповым полям? Т.е. она заведомо превращает твой запрос в неверный. Запрос, который я привел - это уже максимально локализованный участок большого запроса. А в огромном запросе - как найти вот такие фокусы системы? Да и ваще почему я должен искать такие фокусы? не знаю риторические это вопросы или есть какой-то методический ответ.
|
|||
15
catena
08.06.16
✎
13:39
|
(14)СКД - система универсальная и, как любая универсальная система, имеет свои недостатки. Например, во имя оптимизации, выбрасывает неиспользуемые поля. Все претензии к разработчикам.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |