СКД: изменение текста запроса системой компоновки #656372


#0 by Kaidend
Всем привет. Столкнулся с одной проблемкой в СКД, не могу сообразить, как ее решить. В общем, есть простейшая таблица вида Документ - Номенклатура - Количество. Номенклатура может несколько раз повторяться в пределах одного документа, т. е. поля Документ и Номенклатура не образуют вместе первичный ключ. Есть такой запрос:  Таблица.Документ,  СгруппированнаяТаблица.Документ,  СУММА(ВЫБОР КОГДА СгруппированнаяТаблица.Количество > 3 ТОГДА 1 ИНАЧЕ 0) КОНЕЦ ИЗ СКД, когда выполняет запрос, убирает из временной таблицы группировку по номенклатуре, т. к. ее нет ни в выводимых полях, ни в группировочных, ну в общем, нигде (ну, собственно, номенклатуры нет и в результирующем запросе, так что попасть в какие-либо поля она не может).   То есть запрос такой получается:  СгруппированнаяТаблица.Документ,  СУММА(ВЫБОР КОГДА СгруппированнаяТаблица.Количество > 3 ТОГДА 1 ИНАЧЕ 0) КОНЕЦ ИЗ В итоге отчет выводит совсем не то, что нужно. Кто-нибудь знает, как справиться с таким самовольным поведением СКД?
#1 by Kaidend
Прощу прощения, неудачно скопипастил второй запрос. Он такой получается:  СгруппированнаяТаблица.Документ,  СУММА(ВЫБОР КОГДА СгруппированнаяТаблица.Количество > 3 ТОГДА 1 ИНАЧЕ 0) КОНЕЦ ИЗ
#2 by Kaidend
Апнем, пожалуй.
#3 by Пеппи
тебе нужно сгруппировать номенклатуру в пределах одного документа?
#4 by YAGolova
У меня тоже были подобные случаи, я помещал еще в одну временную таблицу и уже потоб брал оттуда данные - мне помогало...
#5 by Kaidend
Да, и определить, сколько раз в пределах одного документа какая-то номенклатура имеет количество более 3. На самом деле, задача чуть более сложная, но я упростил, поэтому она может казаться немного странной. Но меня даже сам принцип удивляет какого-то крайне неаккуратного вмешательства СКД в текст запроса.
#6 by Kaidend
Типа до первой временной таблицы СКД не доберется? :) Хотя попробовать можно...
#7 by Пеппи
в бесплатных видео Гилева чтото было на эту тему.
#8 by Vakhrin
ВЫБРАТЬ  Таблица.Документ,
#9 by Vakhrin
к сори... работать не будет, потому как обращение к несуществующей таблице в первом запросе, но общий смысл должен быть понятен вроде )
#10 by Defender aka LINN
1465-я жертва автозаполнения...
#11 by Vakhrin
Где?! Оо
#12 by Defender aka LINN
в
#13 by Kaidend
Как ни странно помогло, хех. А поподробнее можно? А то уж больно намек туманный. Я включил в результирующий запрос поле Номенклатура, засунув его в агрегатную функцию, и включил этому полю признак "Обязательное" в наборе данных (в диалоге "Роль"). Проблема как бы решилась, но какой-то кривой способ все равно.
#14 by Defender aka LINN
Надо знать, как работает построитель запроса / СКД. Если поле не выбрано в настройках нигде и не является обязательным, СКД его из запроса недолго думая выкидывает. Чтобы этого избежать, надо самому в {} поля прописывать
#15 by Kaidend
Хм, не пойму все-таки, какое отношение к данной проблеме имеет метод заполнения полей набора данных - через автозаполнение или вручную через фигурные скобки. Мне же все равно придется включать поле Номенклатура в результирующий запрос и указывать в его свойствах в наборе данных, что оно обязательное, иначе СКД его решительно выкинет. Какая в этом случае разница, как были заполнены поля набора данных - автозаполнением или вручную?
#16 by Defender aka LINN
Следи за руками:
#17 by rphosts
отключ автозаполнение и бдет тебе счастье!
#18 by Kaidend
Видимо, я отчаянно туплю, но не работает. Скопипастил твой запрос в СКД, выключил автозаполнение. Выполнил отчет. Посмотрел результат, он такой, как будто СКД выкинула группировку по номенклатуре из запроса, формирующего временную таблицу. Посмотрел отчет в консоли системы компоновки данных - точно. СКД преобразует запрос следующим образом:
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С