Запрос в динамическом списке справочника управляемой формы #606814


#0 by dimm7310
УТ11 В справочнике номенклатура есть табличная часть Модели (содержит список моделей автомобилей) Нужно в форме списка сделать фильтр по модели (список значений). запрос: ВЫБРАТЬ    СпрНоменклатура.Ссылка КАК Ссылка, где параметры МоделиКоличество - размер списка моделей СписокМоделей - список моделей в форме списка при переходе на группу товаров где есть элементы  заполненными моделями выскакивает ошибка "Обнаружено дублирование ключевых значений в колонке ссылка" По идее если список фильтра моделей пустой , то и соединение делать не надо, пытался записать через "Выбор"
#1 by Нуф-Нуф
ужаснах
#2 by dimm7310
поскольку если список фильтра не пустой, то и ошибки нет
#3 by dimm7310
подскажи как правильно сделать, я только недавно начал работать с УФ
#4 by vmv
при чем тут УФ? подумай над фильтром соединения
#5 by Nesh
а еще лучше - сделать через отбор, наверное
#6 by dimm7310
на сколько я понимаю, что бы работал отбор нужно что бы готовые данные были в запросе (ИМХО), но в данном случае значений моделей может быть несколько для каждой номенклатуры
#7 by dimm7310
я пробовал и так ВЫБРАТЬ    СпрНоменклатура.Ссылка КАК Ссылка,        Левое СОЕДИНЕНИЕ Справочник.Номенклатура.Модели КАК НоменклатураМодели        ПО СпрНоменклатура.Ссылка = НоменклатураМодели.Ссылка  И ВЫБОР - то же самое
#8 by alexhtn
(ВЫБРАТЬ РАЗЛИЧНЫЕ Ссылка ИЗ Справочник.Номенклатура.Модели ГДЕ Модель В (&СписокМоделей))КАК НоменклатураМодели        ПО СпрНоменклатура.Ссылка = НоменклатураМодели.Ссылка
#9 by dimm7310
теперь при открытии формы список номенклатуры пустой. И при включении фильтра по иерархии номенклатуры вываливается ошибка {ОбщийМодуль.ОбщегоНазначения.Модуль}: Значение не является значением объектного типа (Метаданные)
#10 by dimm7310
куму интересно вроде получилось в таком варианте (сейчас проверяю) ВЫБРАТЬ    СпрНоменклатура.Ссылка КАК Ссылка,    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Модели КАК НоменклатураМодели    ПО СпрНоменклатура.Ссылка = НоменклатураМодели.Ссылка  И ВЫБОР
#11 by dimm7310
Нет, не все как надо почему - то накладывается фильтр только по первому элементу СписокМоделей СписокМоделей - список значений на форме передается через параметр Почему так ?
#12 by dimm7310
как будто в списке только один элемент
#13 by dimm7310
может список значений нужно по другому передавать в запрос? Я передавал так:
#14 by SUA
клюшечник детектед самый простой метод - ВЫБРАТЬ РАЗЛИЧНЫЕ а дальше уже ловить ошибки в неправильной фильтрации
#15 by dimm7310
мне кажется дело не в этом ради эксперимента сделал фильтр на реквизит шапки "ФормаОплаты " документа  ЗаказКлиента так же передаю параметром список значений и снова тоже самое - фильтрует только по первому элементу списка ВЫБРАТЬ    ДокументЗаказКлиента.БанковскийСчетГрузоотправителя, ГДЕ                ТОГДА ДокументЗаказКлиента.ФормаОплаты В (&ВидыОплат) [/code]
#16 by dimm7310
с передачей параметра - подсказали, оказывается бестолку передавать список значений, только массив. а вот запрос наверное действительно придется переделывать на "ВЫБРАТЬ РАЗЛИЧНЫЕ " в моем последнем варианте снова вываливается ошибка дублирования ссылки
#17 by dimm7310
(8,14) Большое спасибо все получилось , просто в я неправильно применил рекомендацию
#18 by dimm7310
черт еще всплыла ошибка - не попадают товары с пустым списком моделей (когда фильтр не задан) ВЫБРАТЬ       Ссылка ИЗ Справочник.Номенклатура.Модели
#19 by dimm7310
если фильтр пустой , то и соединение делать не нужно если попытаться использовать выбор перед соединением, выходит ошибка [code]    СпрНоменклатура.Ссылка КАК Ссылка,              Ссылка ИЗ Справочник.Номенклатура.Модели [/code]
#20 by dimm7310
ругается на синтаксическую ошибку " ВЫБОР" народ, подскажите
#21 by Кокос
если делаешь левое соединение как в то по любому получишь дубли ключевых полей в результате. я в динамических списках соединяю не напрямую таблицы а делаю в скобках ВЫБРАТЬ ИЗ и там внутри делаешь группировку по ключевому полю чтобы в итоговой таблице была всего одна запись по каждому ключу. Ну и в твоем случае поле делаешь не логическое а числовое(0, >0) чтобы было что суммировать в группировка. а потом уже в конечной выборке делаешь ВЫБОР КОГДА блабла = 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК БЛАБЛАБЛА
#22 by Кокос
допустими у тебя две таблицы товар: товар1 выборкасоединения: товар1 истина при соединении получишь две строки с ключевым полем.
#23 by Кокос
ВЫБОР в условии ГДЕ вроде нельзя указывать.
#24 by Кокос
ГДЕ нахрена тут выбор? ГДЕ &МоделиКоличество = 0 ИЛИ Модель В (&СписокМоделей)
#25 by dimm7310
Можно , как раз после "Где" Выбор работает нормально, а синтаксическая ошибка выходит если я пробую ставить "Выбор" перед "Внутреннее СОЕДИНЕНИЕ" при открытии формы список фильтра еще пустой, для этого и Выбор перед "Внутреннее СОЕДИНЕНИЕ ", потому что если список фильтра еще пустой, то и соединение делать не надо - путь отображаются все элементы номенклатуры как есть код в в принципе рабочий (никаких ошибок не выскакивает), только из-за внутреннего соединения выпадают товары у которых таблица моделей пустая
#26 by dimm7310
может есть способ передать текст запроса как на вроде параметр?
#27 by dimm7310
#28 by dimm7310
не понял, если можно подробнее
#29 by dimm7310
?
#30 by alexhtn
Может тебе лучше использовать разные тексты запроса для случаев когда фильтр установлен и отключен?
#31 by dimm7310
Так я про это и спрашиваю, как можно заменить текст запроса ? или вырезать из него кусок с внутренним соединением (если фильтр пустой)
#32 by alexhtn
У динамического списка есть свойство "ТекстЗапроса".
#33 by hhhh
ну а так как вы делали: ИНАЧЕ 1 = 1 разве не прокатит?
#34 by MaxisUssr
ВЫБРАТЬ   Номенклатура.Ссылка,   ... ИЗ (ВЫБРАТЬ    НоменклатураТЧ.Ссылка ИЗ    ТОГДА НоменклатураТЧ.Модель В (&СписокМоделей) ИНАЧЕ ИСТИНА КОНЕЦ СГРУППИРОВАТЬ ПО Номенклатура.Ссылка) КАК ВЗ ГДЕ НЕ ВЗ.Ссылка Есть NULL Написал руками (кривовато), но суть постарался отразить
#35 by MaxisUssr
+ в конце после ГДЕ ГДЕ ВЫБОР КОГДЕ &ЕстьСписокМоделей  ТОГДА НЕ ВЗ.Ссылка Есть NULL ИНАЧЕ ИСТИНА КОНЕЦ
#36 by dimm7310
Супер, все получилось
#37 by dimm7310
спасибо, тоже попробую
#38 by Кокос
а разве не через него он работал?:))
#39 by dimm7310
нет, я не знал про это и писал непосредственно в окне запроса динамического списка
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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