Универсальный отчет, Предопределенный отбор #688759


#0 by MiniMuk
В универсальном отчете есть список предопределенных отборов Как мне перед выполнением проверить если есть отбор, до добавить это условие в запрос. Сам запрос отрабатывает нормально, отбор на этапе вывода тоже отрабатывает, но вопрос в длительности. Без отбора в запросе он отрабатывает около двух - трех минут, с отбором меньше 30 сек. Причина запрос состоит из 7 запросов. Отбор в первом запросе сильно сужает выборку. Причем отбор всегда заполнен, вопрос как в коде понят чем нужно чтото вроде понять где взять СкладНаФорме
#1 by Повелитель
#2 by catena
Можно прям в запросе в условии "Где склад = &Склад или &Склад = Значение(Справочник.Склады.ПустаяСсылка)" И потом просто параметр.
#3 by MiniMuk
, Все клево, вот только как параметр склад получить с элемента формы я допереть не могу
#4 by MiniMuk
что только не перебирал ЭтотОбъект.КомпоновщикНастроек.Настройки.Выбор.ДоступныеПоляВыбора.Элементы ЭтотОбъект.КомпоновщикНастроек.Настройки.ДоступныеОбъекты.Элементы ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.Выбор.ДоступныеПоляВыбора.Элементы ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.ДоступныеПоляВыбора.Элементы ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.ДоступныеПоляОтбора.Элементы ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.ДоступныеПоляОтбора.Элементы нигде не вижу
#5 by Defender aka LINN
А для нахрена это делать, если построитель сам, без помощи корявых программерских рук, отбор преобразует в условия в тесте запроса и, опять же, сам, устанавливает параметры?
#6 by catena
Так все-таки универсальный отчет или СКД? Лучше всего добавить свой склад в реквизиты обработки.
#7 by MiniMuk
Я же писал, отбор производится на стадии вывода, вам это ни очем не говорит? Сам он запрос не редактирует потому что там этого отбора нет.   Это универсальный отчет, пользователям он нравиться и пользоваться они им более менее научились по сравнению с СКД. Я никакие реквизиты в обработку не добавляю, только сам запрос и предопредленные параметры
#8 by catena
Так это дополнительное поле на форме или хотите использовать отбор? Почему не добавить на этот запрос условие построителя, чтобы он в запросе БЫЛ?
#9 by MiniMuk
Это дополнительный обор УниверсальныйОтчет.ДобавитьОтбор("Склад"); Так же для пользователя это является быстрым обором. Теоретически( но только теоретически) они его всегда заполняют, если я отбор добавлю в запрос параметро и не заполню будет ошибка
#10 by Defender aka LINN
"отбор производится на стадии вывода" - это как вообще? И какая религия мешает сделать это нормальным, человеческим отбором?
#11 by catena
Ну добавляй не параметром, а построителем, в чем проблема?
#12 by MiniMuk
Как постоителем добавить?
#13 by MiniMuk
как я работаю с универсальным отчетом Пишу запрос, устанавливаю предопределеные отборы, выводимые поля, форматирование. Все. Если в запросе ставлю условие типа |ГДЕ |    битМатрицаВSKUМатрица.Ссылка = &Ссылка то без установки параметра будет ошибка запроса. Поэтому условие надо добавить если параметр выбран
#14 by Defender aka LINN
А ты про {} когда-нибудь слышал?
#15 by MiniMuk
скажем нет, можешь быть первым кто ткнет в справку
#16 by Defender aka LINN
Ну и мне до сих пор интересно, как построитель понимает тип отбора, если он "производится на стадии вывода" и, собственно, КАК он производится
#17 by catena
Смотри в итоговом запросе: Это значит все эти поля могут быть выбраны в отборе построителя и этот отбор будет работать только при наличии выбора. Теперь там, где тебе надо, сделай так же.
#18 by Defender aka LINN
Открываешь конструктор запросов, вкладка "Построитель". Документацию сам ищи, в мануале все есть
#19 by MiniMuk
Ага, склад там есть. Но если я строю запрос и в запросе указываю конкретный склад до выполнения запроса он выполняется на порядок быстее чем если указываю в отборе. Как я понимаю работает постоитель, он выполняет весь запрос. И на этапе вывода собирает данные по отборам. Но дело в том что запрос уже выполнен. И в него попало куча ненжных данных, постоитель их отборосит. Но если склад указать с самом первом запросе [1c]     ТекстЗапроса =     "ВЫБРАТЬ     |    битМатрицаВSKUМатрица.КатегорияСкладов КАК КатегорияСкладов,     |    битКатегорииСкладовДляМатрицыВSKUСклады.Склад КАК СкладКатегорииСкладов,     |    битМатрицаВSKUМатрица.КатегорияТоваров,     |    битКатегорииТоваровДляМатрицыВSKUТовары.Номенклатура КАК НоменклатураКатегорииТоваров,     |    СУММА(битМатрицаВSKUМатрица.SKU) КАК SKU_План,     |    битМатрицаВSKUМатрица.Ссылка     |ПОМЕСТИТЬ Матрица     |ИЗ где склад = &мойпараметр [1c] то запрос выполняется быстрее потому что сбор данных идет по более узкому кругу данны.
#20 by MiniMuk
Универсальный отчет работает на базе построителя, без него не взлетает, тоесть как минимум про постоитель я в курсе
#21 by MiniMuk
Если я тебя правильно понял мне в первый запрос добавить постоитель, примерно так [1c] |ПОМЕСТИТЬ Матрица |{ВЫБРАТЬ |    КатегорияСкладов.*, |    СкладКатегорииСкладов.*, |    КатегорияТоваров.*} [1c]
#22 by Defender aka LINN
"Как я понимаю работает постоитель, он выполняет весь запрос. И на этапе вывода собирает данные по отборам" - вот мне до сих пор интересно - откуда взялся этот бред? И поячему в него так охотно верят, а начинаешь доказывать, что это не так - ни в какую. "тоесть как минимум про постоитель я в курсе" - друх, ты же не умеешь писать запросы для построителя, как же это ты в курсе?
#23 by Defender aka LINN
Не ВЫБРАТЬ (хотя тоже можно, если осторожно), а ГДЕ
#24 by catena
Ну почему же ВЫБРАТЬ то???
#25 by Defender aka LINN
Потому что он ответа ждет, который можно не включая моск использовать. Вот и не включает
#26 by MiniMuk
#27 by MiniMuk
Прмерно понятно, пошел тестить. Еще вопрос И поячему в него так охотно верят, а начинаешь доказывать, что это не так - ни в какую. Какие доказательства есть по этму утверждению, это описано в документации? потверждается тестами?
#28 by Defender aka LINN
Вот и я о том же ж. А ты много доказательств требовал перед тем, как уверовать в бред? А с меня теперь требуешь.
#29 by MiniMuk
Не требую, просто если писал - то может быть под рукой. Уверовал когда сравнил работу с фшитым отбором и без него. Про построитель на первом этапе запроса не подумал. Почитаю про постоитель
#30 by MiniMuk
Ах, ну да, всем учавствующим, спасибо
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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