|
Поиск по строке справочника "номенклатура" УТ 11.1.14.1 (выявленный ляп) | ☑ | ||
---|---|---|---|---|
0
MrGray
10.04.14
✎
23:58
|
Собственно началось всё с того, что подбор по строке (по любому сочитанию полей в этой конфе) не работает...
Вот процедура замещающая стандартный функционал: Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // Получим структуру возможных полей отбора справочника номенклатуры СтруктураРеквизитов = ЗначениеНастроекПовтИсп.РеквизитыСправочника("Номенклатура"); Запрос = Новый Запрос; СтрокаПоиска = Параметры.СтрокаПоиска; УсловиеОтбора = ""; Для Каждого КлючИЗначениеОтбора Из Параметры.Отбор Цикл Если СтруктураРеквизитов.Свойство(КлючИЗначениеОтбора.Ключ) Тогда УсловиеОтбора = УсловиеОтбора + " |И СпрНоменклатура." + КлючИЗначениеОтбора.Ключ + " В (&" + КлючИЗначениеОтбора.Ключ + ")"; Запрос.УстановитьПараметр(КлючИЗначениеОтбора.Ключ,КлючИЗначениеОтбора.Значение); КонецЕсли; КонецЦикла; ТекстЗапроса = "ВЫБРАТЬ | СпрНоменклатура.Ссылка, | СпрНоменклатура.Наименование КАК ПредставлениеСовпадения, | СпрНоменклатура.Качество.Порядок КАК Качество, | 0 КАК Порядок, | СпрНоменклатура.Код КАК ПредставлениеНоменклатуры, | СпрНоменклатура.ЭтоГруппа |ПОМЕСТИТЬ НоменклатураПоиск |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура |ГДЕ | СпрНоменклатура.Наименование ПОДОБНО &СтрокаПоиска | И СпрНоменклатура.ЭтоГруппа = ЛОЖЬ" + УсловиеОтбора + " | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | СпрНоменклатура.Ссылка, | СпрНоменклатура.Код, | СпрНоменклатура.Качество.Порядок, | 1, | СпрНоменклатура.Наименование, | NULL |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура |ГДЕ | СпрНоменклатура.Код ПОДОБНО &СтрокаПоиска | И СпрНоменклатура.ЭтоГруппа = ЛОЖЬ" + УсловиеОтбора + " | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | СпрНоменклатура.Ссылка, | СпрНоменклатура.Артикул, | СпрНоменклатура.Качество.Порядок, | 2, | СпрНоменклатура.Наименование, | NULL |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура |ГДЕ | СпрНоменклатура.Артикул ПОДОБНО &СтрокаПоиска | И СпрНоменклатура.ЭтоГруппа = ЛОЖЬ" + УсловиеОтбора + " | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | СпрНоменклатура.Ссылка, | СпрНоменклатура.КодДляПоиска, | СпрНоменклатура.Качество.Порядок, | 3, | СпрНоменклатура.Наименование, | NULL |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура |ГДЕ | СпрНоменклатура.КодДляПоиска ПОДОБНО &СтрокаПоиска | И СпрНоменклатура.ЭтоГруппа = ЛОЖЬ" + УсловиеОтбора + " |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | НоменклатураПоиск.Ссылка, | МИНИМУМ(НоменклатураПоиск.Порядок) КАК Порядок |ПОМЕСТИТЬ НоменклатураПоПорядку |ИЗ | НоменклатураПоиск КАК НоменклатураПоиск | |СГРУППИРОВАТЬ ПО | НоменклатураПоиск.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | НоменклатураПоиск.Качество КАК Качество, | НоменклатураПоиск.Ссылка, | НоменклатураПоиск.Порядок КАК Порядок, | НоменклатураПоиск.ПредставлениеСовпадения КАК ПредставлениеСовпадения, | НоменклатураПоиск.ПредставлениеНоменклатуры КАК ПредставлениеНоменклатуры |ИЗ | НоменклатураПоПорядку КАК НоменклатураПоПорядку | ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураПоиск КАК НоменклатураПоиск | ПО НоменклатураПоПорядку.Ссылка = НоменклатураПоиск.Ссылка | И НоменклатураПоПорядку.Порядок = НоменклатураПоиск.Порядок | |УПОРЯДОЧИТЬ ПО | Порядок, | Качество, | ПредставлениеСовпадения, | ПредставлениеНоменклатуры"; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("СтрокаПоиска", СтрокаПоиска + "%"); ДанныеВыбора = Новый СписокЗначений; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ТекстЗначения = СокрП(Выборка.ПредставлениеСовпадения) + " (" + Выборка.ПредставлениеНоменклатуры + ")"; ДанныеВыбора.Добавить(Выборка.Ссылка, ТекстЗначения); КонецЦикла; КонецПроцедуры // --- Собссно вопрос, неужели никого не интересовала данная проблема? Особо умиляет СтруктураРеквизитов.Свойство(КлючИЗначениеОтбора.Ключ) Тогда УсловиеОтбора = УсловиеОтбора + " |И СпрНоменклатура." + КлючИЗначениеОтбора.Ключ + " В (&" + КлючИЗначениеОтбора.Ключ + ")"; ..короче, если у кого есть проблемы с вводом по строке в данной конфе,- проще отключить "грибной" код замены стандартных действий. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |