|
v7: Проблемы с кавычками в sql | ☑ | ||
---|---|---|---|---|
0
Fiasko
11.05.13
✎
02:11
|
Братцы, помогите.
Если делаю фильтр по значению, содержащему два эпострофа ('') в конце строки - то запрос работает не корректно. Апострофы в справочнике убирать с конца - не вариант вообще. Можно же что-то предпринять еще? ТекстЗапроса = " |SELECT | Номенклатура.ID [Ссылка $Справочник.Номенклатура], //| $СвойстваНоменклатуры.ВидСвойства [ВидСвойства $Справочник.ВидыСвойств], | $СвойстваНоменклатуры.ЗначениеСвойства [ЗначениеСвойства $Справочник.ЗначенияСвойств] |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK) | RIGHT JOIN $Справочник.СвойстваНоменклатуры AS СвойстваНоменклатуры With (NOLOCK) ON Номенклатура.ID = СвойстваНоменклатуры.PARENTEXT |WHERE | ($СвойстваНоменклатуры.ВидСвойства = :ВидФильтра) | AND ($СвойстваНоменклатуры.ЗначениеСвойства = :ЗначениеФильтра) //|ORDER BY //| $Справочник.ЗначениеСвойства |"; |
|||
1
ЧеловекДуши
11.05.13
✎
04:59
|
(0)Вот как надо работать со свойствами :)
//Получаешь ВИД свойства, откуда угодно, по дефолту оно в константе. Без него работа со свойствами в 1С не имеет смыслу, т.е. туфтовый метод, это "Свойство" ВидФильтра = Константа.СвоиствоНоменклатуры; //Или как там у вас :) ЗапросSQL.УстановитьТекстовыйПараметр("ВидФильтра",ВидФильтра); //И вот таким запросиком получаешь своё свойство, ибо свойство всегда одно для каждого нужного элемента справочника, в твоём случае это Номенклатура ТекстЗапроса=ТекстЗапроса+" |(Select Top 1 $СвойсТовара.ЗначениеСвойства From $Справочник.СвойстваНоменклатуры AS СвойсТовара(NOLOCK) | Where СвойсТовара.PARENTEXT = Номенклатура.ID and $СвойсТовара.ВидСвойства = :ВидФильтра) as НекоеСвойствоЧегоТо"; И не надо там всяких джойнов, со свойством только так, первое попавшее и усе :) |
|||
2
ЧеловекДуши
11.05.13
✎
05:02
|
ТекстЗапроса = "
|SELECT | Номенклатура.ID [Ссылка $Справочник.Номенклатура], | (Select Top 1 $СвойсТовара.ЗначениеСвойства From $Справочник.СвойстваНоменклатуры AS СвойсТовара(NOLOCK) | Where СвойсТовара.PARENTEXT = Номенклатура.ID and $СвойсТовара.ВидСвойства = :ВидФильтра) [ЗначениеСвойства $Справочник.ЗначенияСвойств] |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK) |Group By Номенклатура.ID |"; |
|||
3
ЧеловекДуши
11.05.13
✎
05:07
|
+ А если нужно фильтр по значению свойства, то делай это в другом запросе...
//Примерно так ТекстЗапроса = " Select ЗС.Ссылка [Ссылка $Справочник.Номенклатура], ЗС.ЗначениеСвойства [ЗначениеСвойства $Справочник.ЗначенияСвойств] From( SELECT Номенклатура.ID as Ссылка, (Select Top 1 $СвойсТовара.ЗначениеСвойства From $Справочник.СвойстваНоменклатуры AS СвойсТовара(NOLOCK) Where СвойсТовара.PARENTEXT = Номенклатура.ID and $СвойсТовара.ВидСвойства = :ВидФильтра) as ЗначениеСвойства FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK) Group By Номенклатура.ID ) as ЗС |
|||
4
ЧеловекДуши
11.05.13
✎
05:08
|
+ "Where" по "ЗС" и далее сам
|
|||
5
Fiasko
11.05.13
✎
12:35
|
не знаю, может я написал плохо... у меня нет проблем с текстом запроса, просто в этом реквизите -> $СвойстваНоменклатуры.ЗначениеСвойства в конце значения есть два апострофа и, похоже, из-за этого запрос выводит пустую тз, т.к. если убрать апострофы или переместить их, например, в центр строки - срабатывает нормально.
|
|||
6
mikecool
11.05.13
✎
12:52
|
(5) проверяй - если значение свойства текстовое, то добавляй парные ковычки в начало и конец значения
|
|||
7
Fiasko
12.05.13
✎
01:44
|
(6) а можно попросить синтаксис фильтра написать? Я пытался, у меня постоянно ошибки лезут в этом случае...
|
|||
8
mikecool
12.05.13
✎
08:53
|
(7) не, я уже забыл как делать, а рыться в справке за тебя лень...
|
|||
9
Злой Бобр
12.05.13
✎
12:42
|
(0) Уже б давно поубирал апострофы и забыл о "проблеме".
|
|||
10
ЧеловекДуши
13.05.13
✎
14:32
|
(7) Как вариант, уложи свое значение во Временную Таблицу и сверяй. Хотя отладчик запросов тебе более даст ответов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |