Знатокам СКД! Как в параметре для СКД сделать вид сравнения?? #699092


#0 by SerGa
Есть СКД источником данных которой является не запрос а Набор данных. Т.е. я с помощью запроса формирую таблицу значений (ТЗ), которую потом загружаю в набор данных СКД. Для корректного первоначального формирования ТЗ, для запроса который формирует эту ТЗ мне нужны параметры. Например Контрагент, для которого должна быть возможность задать в запросе не только Контрагент = &Контрагент, а и Не равно Не в списке  и т.д. Если параметры передавать через Параметры СКД и потом их считывать через ПараметрыДанных.Элементы.Найти(НаименованиеПараметра) то в параметрах СКД нет возможности выбора вида сравнения А если попробовать считывать параметры,который я попробую передавать через закладку Отбор в СКД, то считать то их получится НО они будут потом опять накладываться на конечный набор данных, что не правильно, т.к. в конечном наборе таких полей нет вообще (например Контрагент). Как быть???
#1 by Gr
Используй не запрос для формирования ТЗ, а построитель запроса. Напиши функцию синхронизации отборов СКД с отборами построителя. Будет счастье.
#2 by mikecool
сомнительное это счастье )) писал такую - строк 500 вышла
#3 by SerGa
правильно я понял, что на форму нужно будет вывести форму отбора построителя???
#4 by Gr
у меня универсальная около 30-40 строк
#5 by Gr
нет, на форме используй настройки скд
#6 by SerGa
что то типа этого??
#7 by Gr
да
#8 by SerGa
не понял тогда.. параметр контрагент мне в Параметры СКД выносить???
#9 by Gr
в том то и дело, что не нужно
#10 by SerGa
вот..  а где тогда пользователь будет выбирать вид сравнения и задавать конкретного контрагента???
#11 by Gr
перед выполнением запроса построителя, выполни синхронизацию отборов скд с отборами построителя. В отборах скд задай нужного тебе контрагента, список контрагентов и т.п.
#12 by SerGa
ага...НО тогда эти отборы будут потом опять накладываться на конечный набор данных, что не правильно, т.к. в конечном наборе таких полей нет вообще (например Контрагент). например выбираю из регистра Продажи с отбором по контрагенту продажи по номенклатуре т.е. в конечной тз есть поля Номенклатура и Сумма а поля Контрагент Нет и быть не должно. В отборе же контрагент есть и этот отбор активен! т.е. несмотря на то что ТЗ не пустая, но отчет мне будет выдавать пустоту, т.к поверх будет наложен отбор Контрагент
#13 by Зойч
Зачем построитель? Юзай еще одну скд для получения таблицы!!!
#14 by Gr
что мешает включить в набор данных контрагента, но не выводить его потом для пользователя?
#15 by Gr
тоже правильно, вообще все зависит от сложности выборки данных, нужно смотреть на конкретную задачу
#16 by SerGa
не получиться т.е. запрос к продажам, является одним из десятка подзапросов ко многим регистрам как накопления так и бухгалтерии, из которых собираются а потом группируются много самых разнородных данных (для фин анализа) и соответственно контрагент в конечном наборе вообще не в тему
#17 by Gr
тогда, придумай к параметру Контрагент, еще один параметр ВидСравненияДляКонтрагента, и выкручивайся как то так
#18 by Gr
лично я предпочитаю не использовать ТЗ в качестве набора данных, делаю это очень редко. Как по мне, то лучше в запросе СКД использовать временные таблицы
#19 by SerGa
примерно так и думал сделать, но полагал есть более красивое решение... возможно я не вполне оцениваю возможности использования операторов {} , т.к. не вполне понимаю как сделать так, чтобы в зависимости от выбранных параметров сделать так, чтобы какие-то временные таблицы формировались а какие-то нет...
#20 by SerGa
Придумал как избежать наложение отборов на конечный набор ... в ТекНастройки отключаю использование необходимых Отборов
#21 by Gr
да, так тоже будет работать. Только не забудь после вывода данных на экран, опять включить отбор, а то пользователи будут дезориентированы
#22 by SerGa
да, именно так и сделаю. спасибо за конструктивную беседу..
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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