Имя: Пароль:
1C
1С v8
Использование функций в запросах
0 LivingStar
 
23.11.11
07:42
Имеется запрос, нужно выбрать только ту номенклатуру из табличной части которая начинается на П или А. Как добавить условие в запрос, -
(Лев(ЗаказПокупателяТовары.Номенклатура,1) = "П") или (Лев(ЗаказПокупателяТовары.Номенклатура,1) = "А") ?


ВЫБРАТЬ
   ЗаказПокупателяТовары.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
   ЗаказПокупателяТовары.Ссылка = &Док
1 Escander
 
23.11.11
07:43
Шаблоны Like не предлагать?
2 Wobland
 
23.11.11
07:44
(1) лучше предложить ПОДОБНО )
3 Wobland
 
23.11.11
07:45
а вообще привязываться на первую букву не стоит. "горошек зелёный" и "зелёный горошек" может означать одно и то же
4 Rie
 
23.11.11
07:47
(1) +100

(0) А если по каким-то причинам ПОДОБНО не устраивает - есть функция ПОДСТРОКА.
5 LivingStar
 
23.11.11
07:47
(3) чисто по инструкции в запросе хотелось бы узнать как это реализуемо что в (0),
а так (3) конечно стоит иметь ввиду !
6 Wobland
 
23.11.11
07:50
(5) ПОДОБНО "П%", ПОДСТРОКА(Поле, 1, 1)="П"
изучай документацию
7 LivingStar
 
23.11.11
08:02
(6) а как это в рапросе задать?
8 Gesperid10
 
23.11.11
08:11
(7)


ГДЕ Поле ПОДОБНО "П%"



ГДЕ ПОДСТРОКА(Поле, 1, 1)="П"


а вообще ппц конечно
9 LivingStar
 
23.11.11
08:13
(8) это не работает
10 Wobland
 
23.11.11
08:14
(9) конечно не будет. запрос ведь должен начинаться со слова ВЫБРАТЬ ;)
11 LivingStar
 
23.11.11
08:14
не работает

ВЫБРАТЬ
   ЗаказПокупателяТовары.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
   ЗаказПокупателяТовары.Ссылка = &Док
И
   ПОДСТРОКА(ЗаказПокупателяТовары.Номенклатура,1,1) = "П"
12 Wobland
 
23.11.11
08:15
(11) Номенклатура.Наименование
13 Нуф-Нуф
 
23.11.11
08:15
кстати чтобы использовать свои функции в запросе - можно заюзать общий модуль, и в скд через вычисляемое поле обращаться к нему. изврат конечно и хз как скажется на производительности - но как вариант
14 Rie
 
23.11.11
08:15
(9) Что именно не работает (текст неработающего запроса - в студию) и как именно не работает (выдаёт сообщение об ошибке - и какое именно, или же результат не соответствует твоим ожиданиям - опять же, в чём именно).
15 Rie
 
23.11.11
08:16
(13) Почему ХЗ? Хреново скажется. Поэтому если есть в языке запросов ПОДОБНО - его и надо использовать.
16 Wobland
 
23.11.11
08:18
(15) я тут сейчас подумал, а как быть, если нужно найти все наименования, начинающиеся на символ в нижнем регистре...
17 Нуф-Нуф
 
23.11.11
08:19
(15) да нее. я имею ввиду функцию посерьезнее чем подобно.
18 Rie
 
23.11.11
08:20
(16) ПОДОБНО "[a-zа-я]%"?
19 LivingStar
 
23.11.11
08:21
так получилось

ВЫБРАТЬ
   ЗаказПокупателяТовары.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
   ЗаказПокупателяТовары.Ссылка = &Док
И
   (ПОДСТРОКА(ЗаказПокупателяТовары.Номенклатура.Наименование,1,1) = "П"
   ИЛИ    
   ПОДСТРОКА(ЗаказПокупателяТовары.Номенклатура.Наименование,1,1) = "А")
20 Wobland
 
23.11.11
08:22
(18) тоже не знал?
выбрать выбор когда "Аб" ПОДОБНО "[а-я]%" тогда истина иначе ложь конец
даёт истину
21 Rie
 
23.11.11
08:22
(17) Если функция посерьёзнее - то тут уж ничего не попишешь. Но в данном случае - для решения задачи ТС надо было просто прочитать встроенную справку.
22 Rie
 
23.11.11
08:23
(20) Я тормоз :-(
Действительно ведь, case-independent :-(
23 Rie
 
23.11.11
08:25
(19) А так ещё короче:
ВЫБРАТЬ
   ЗаказПокупателяТовары.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
   ЗаказПокупателяТовары.Ссылка = &Док
И
   ЗаказПокупателяТовары.Номенклатура.Наименование,1,1) ПОДОБНО "[ПА]%"
24 Sammo
 
23.11.11
08:27
(22) А если по-русски, то запрос отбирает без учета регистра. :)
25 Sammo
 
23.11.11
08:28
(16) СКД (внешняя функция) или не через запрос.