Заменить запрос в СКД #738941


#0 by first_may
Добрый день. Есть отчет с использованием СКД. Можно ли сделать так, что если допустим пользователь ставит отбор по Реквизиту1, то выполняется Запрос1, а если отбор по Реквизиту2 или нет отбора, то выполнятеся Запро2?
#1 by DirecTwiX
Два набора данных. В первом условие "ГДЕ Реквизит1", во втором "ГДЕ НЕ Реквизит1". Суть должна быть ясна)
#2 by first_may
два набора я уже сделал, а вот как узнать отбор есть или нет и как обработать это при нажатии кнопки Сформировать - не могу.
#3 by DirecTwiX
Программно выполнять СКД/использовать параметр вместо отбора
#4 by first_may
А на кнопке Сформировать не вижу никаких событий.
#5 by DrShad
есть предопределенная процедура модуля объекта
#6 by first_may
#7 by DrShad
сложный выбор, да?
#8 by first_may
Уже попробовал. При нажатии на кнопку Сформировать попал в первую. И тут можно проверить на то, есть ли отбор или нет и тут же подменить НаборДанных
#9 by first_may
Вижу здесь есть отбор. Тип элемента    Использование    ЛевоеЗначение    ВидСравнения    ПравоеЗначение ЭлементОтбораКомпоновкиДанных    Истина    СкладОтправитель    Равно    Божкова Наталья Анатольевна А запрос подменить можно?
#10 by DrShad
блин, тебе вторая нужна - там можно
#11 by DirecTwiX
Заинтриговал таким использованием отборов.. Расскажешь задачу?)
#12 by first_may
я понимаю, что второй набор, а как подменить :(. Не вижу в КомпоновщикНастроек ничего похожего на набор данных.
#13 by DrShad
#14 by DrShad
сорри, кажется немного не то, но набор можно увидеть
#15 by first_may
ага, вижу. буду пробовать.
#16 by DirecTwiX
Не проще использовать два набора и параметр? Параметр подсовывать в ПриКомпоновкеРезультат.
#17 by DrShad
наткнется потом на использование двух не связанных наборов
#18 by first_may
у меня и так два набора: ГДЕ     ПеремещениеТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаОкончания и ВЫБРАТЬ ГДЕ     ПеремещениеТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаОкончания и если в отборе пользователь указал СкладПолучатель или СкладОтправитель , то я хочу что бы использовался второй набор, а иначе первый
#19 by eklmn
все что ты делаешь это идиотизм. все делается 1 запросом
#20 by eklmn
при чем первым и склады свои выбирай в отборе
#21 by eklmn
а вы чему учите? стыдно должно быть )
#22 by first_may
одним первым запросом нельзя же получить документы, где отправитель и получатель один и тот же склад
#23 by eklmn
ну и вторым тоже
#24 by eklmn
и почитай про это {}
#25 by first_may
#26 by DirecTwiX
На ТС решил не отвечать, пришлось действовать вслепую :) И параметр и отбор используешь?) Если до сих пор не получилось, то имеет смысл описать задачу.. Пока что склоняюсь к ..
#27 by Лефмихалыч
человек, который после тебя будет это сопровождать, проклянет и тебя, и все твое потомство, если ты так сделаешь
#28 by first_may
задача заключается в том, что надо вывести документы перемещения за период. Но пользователь может установить отбор по складу и тогда надо вывести документы где этот склад является отправитель или получателем. Поэтому и возникло идея написать два запроса. Отчет на основании СКД. спасибо за подсказку, ничего умнее не слышал.
#29 by MrStomak
Твоя задача решается 1 запросом и 1 настроенным отбором в самой схеме. Идея дробить на 2 запроса - лютый неприкрытый бред.
#30 by first_may
незнаю, как решить одним запросом
#31 by User_Agronom
Внешний отчёт на СКД. Ничего страшного. Плюнет и перепишет по нормальному.
#32 by hhhh
просто два набора. В одном ГДЕ Реквизит в другом ГДЕ Не Реквизит подменять ничего не надо
#33 by DrShad
а я вообще не читал текст запроса', ну а подмена запроса и мне не раз была нужна
#34 by RomanYS
(СкладОтправитель = &Склад или СкладПолучатель = &Склад или &Склад = Значение(Справочник.Склады.ПустаяСсылка))
#35 by Ma3eIIa
без или объединение. или мешает производительности
#36 by User_Agronom
Массив можно передавать.
#37 by romix
Вид Склада: Получатель/Отправитель :-)
#38 by Web00001
Было дело, собирал отчет, в зависимости от выбранных пользователем параметров. Там должны были остатки рассчитываться исходя из того какой склад выбран, сколько их и в какой последовательности они перечислены. Собирался программно на 80% где то. В том числе и запрос. Если хочешь посмотреть, напиши на почту, могу скинуть как пример.
#39 by RomanYS
так лучше? &Склад В (Т.СкладОтправитель, Т.СкладПолучатель, Значение(Справочник.Склады.ПустаяСсылка))
#40 by MrStomak
Никто не упомянул, что для подобного отчета есть регистр ТоварыНаСкладах, в запросе по которому никаких хитростей с параметрами не нужно будет.
#41 by MrStomak
Объединение выполнит два скана вместо одного, если поля не проиндексированы. А это медленнее. Ну и по "или" индекс может использоваться вообще-то.
#42 by DirecTwiX
Объяснить пользователю, что это нелогично. Правильнее, на мой взгляд, будет использовать отбор вида (СкладОтправитель = &Склад ИЛИ СкладПолучатель = &Склад). Иначе будет невозможно вывести список перемещений со склада отправителя, например. Либо использовать дополнительный параметр &Склад и запросе указать ({ПеремещениеТоваровТовары.Ссылка.СкладОтправитель = &Склад Пример задачи можно услышать?) Мне кажется, что пользователи уже через пару недель забудут как пользоваться этим отчетом :)
#43 by Web00001
Пользователи как оформляли документы с этим отчетом так и оформляют по текущий момент. Прошло где то года полтора. Тебе надо то че? Доказать, что этого делать было не нужно? Неважно в чем вообще соль, не зная задачи, не видя реализации, тебе как я понимаю надо обо с рать решение потому что оно не уложилось в твои рамки.
#44 by DirecTwiX
Ошиб а ешься. Интересно, действительно ли бывают ситуации, где разумнее/удобнее сделать ичпользовать подмену запроса. Ибо спустя большое число произвольных отчетов, лично мне такое не приходилось делать. Не отрицаю возможность существования таких ситуаций, но сейчас ты повел себе так, будто сам давно признал кривоту своего отчета.
#45 by Web00001
Не отрицаешь ты только в последнем посте, видимо что бы выглядеть красивее. В интернете мы все такие умные когда советуем другим. Просыпается пафос и "профессионализм" в виде: "что пользователи уже через пару недель..." или " будто сам давно признал кривоту...". ЗЫ Извини как то накопилось. Я понимаю что ты из эникея в 1сника вырос на мисте. Однако не стоит так буквально перенимать стиль общения часто здесь применяемый.
#46 by DirecTwiX
>Не отрицаешь ты только в последнем посте, видимо что бы выглядеть красивее. Лол) И в каком же посте я отрицаю существование ситуаций, где разумнее/удобнее сделать ичпользовать подмену запроса?) >В интернете мы все такие умные когда советуем другим. Просыпается пафос и "профессионализм" Смотря как советовать. Не поверишь, это можно делать бескорыстно, просто из желания сделать доброе дело. >"профессионализм" в виде: "что пользователи уже через пару недель..." Не раз попадал в ситуацию в подобную ситуацию, поэтому сейчас стараюсь делать максимально удобные и понятные пользователю отчеты и обработки. Особенно нравится переписывать за кем-то простой отчет, который невозможно отладить из-за непонятной логики его работы. Например, видишь отчет, думаешь что он работает одним запросом, лезешь исправлять и натыкаешься на непонятные таблицы/наборы данных. Либо когда с виду отчет работает одним образом, а внутри добавлено куча проверок с IF-ами. Перенимать стиль общения? Я вроде как полноценная личность и период подражания кому-то уже давно перерос) Предпочитаю ненавязчивое общение, стараюсь не ставить себя выше других и уж тем более не стану критиковать другого человека, не зная полной картины/"не видя реализации". Но когда начинают грубить, молчать не стану. Без обид, твоё решение не критиковал и не собирался, да и к людям с этого форума с полоской большей чем у меня в первую очередь отношусь с уважением. Думаю, недоразумение можно считать исчерпанным :) Буду рад увидеть реализацию подобного отчета, на почту кинул письмецо)
#47 by first_may
Добрый вечер. Вообщем то задача решилась одним запросом: ГДЕ     ПеремещениеТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаОкончания     И ПеремещениеТоваровТовары.Номенклатура.Артикул ПОДОБНО "%" + &СерийныйНомер + "%" Спасибо всем, за общениие :)
#48 by first_may
Теперь необходимо его доработать, а именно. Есть Товар1 который перемещается от Иванову к Петрову. Есть Товар2 который перемещается от Сидорова к Петрову, а затем от Петрова к Федорову. Есть Товар3 который перемещается от Акулова к Федорову, а затем от Федорову к Петрову. Надо получить список товаров, которые на данный момент есть у Петрова, в данном случае это Товар1 и Товар3. Так как Товар2 ушел к Федорову. Как это можно сделать?
#49 by Ma3eIIa
отбор по петрову не ?
#50 by Ma3eIIa
нахера говорить хер знает что
#51 by first_may
Если склад отравитель = Петров, то получим Товар2, а если склад получатель = Петров, то получим Товар1, Товар2 и Товар3 И так и так неверное
#52 by Ma3eIIa
стоп. а покажи движение что что вс у федора ?
#53 by Ma3eIIa
добавь параметр в рс где будешь получать уровень узла и все
#54 by first_may
Перемещение1 от Иванову к Петрову. Перемещение2 от Сидорова к Петрову. Перемещение3 от Петрова к Федорову. Перемещение4 от Акулова к Федорову. Перемещение5 от Федорову к Петрову.
#55 by first_may
Перемещение1 от Иванову к Петрову (Товар1). Перемещение2 от Сидорова к Петрову (Товар2). Перемещение3 от Петрова к Федорову (Товар2). Перемещение4 от Акулова к Федорову (Товар3). Перемещение5 от Федорову к Петрову (Товар3).
#56 by MrStomak
Я ненавязчиво намекну еще раз - обе задачи подразумевают использование регистра накопления ТоварыНаСкладах. За реализац ю подобных отчетов через документы нужно жестоко избивать и делать запись в трудовую.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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