Имя: Пароль:
1C
 
Как выбрать с помощью ПОДОБНО непустые строки ?
0 Murdoch
 
10.01.07
12:45
Имеем спр. контрагенты, в справочнике есть реквизит ИстИнф: тип строка переменной неограниченной длины.

как выбрать все элементы этого справочника, у которых этот реквизит не пустой, т.е. заполнен хотя бы чем-то кроме пробелов.

выборку нужно сделать из консоли отчетов.
1 MikleV
 
10.01.07
12:50
накуй эта хрень в БЗ?
ПОДСТРОКА побпробуй.
2 Murdoch
 
10.01.07
12:54
и что делать с этой ПОДСТРОКА ?
3 rom
 
10.01.07
12:55
(2)

Оператор проверки строки на подобие шаблону
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.

Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.

Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.

Причем перед этой последовательностью может располагаться произвольный набор символов.
4 Murdoch
 
10.01.07
12:55
это все естесственно прочитано,
вы на вопрос можете ответить ?
5 Рэйв
 
10.01.07
12:56
Нафига тебе ПОДОБНО?


//----------------
Где ИстИнф<> &НепустаяСтрока

Запрос.УстановитьПараметр("НепустаяСтрока","");
6 Рэйв
 
10.01.07
12:56
+(5)т.е. ПустаяСтрока:)
7 Murdoch
 
10.01.07
12:57
Рэйв

ну где я напишу в консоле отчетов фразу Запрос.УстановитьПараметр ?
8 coder1cv8
 
10.01.07
12:58
+(6) тока ПОДСТРОКА надо всё-равно использовать, так сравнить не даст...
9 Murdoch
 
10.01.07
12:59
ВЫБРАТЬ
   Контрагенты.Ссылка,
   Контрагенты.ИсточникИнформации
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.ИсточникИнформации <> &пст

вот код, что подставить вместо условия ГДЕ ?
т.к. то что написано - не работает в принципе....
Контрагенты.ИсточникИнформации строка неограниченной переменной длины
10 coder1cv8
 
10.01.07
13:03
(9) для тех кто в танке:
ГДЕ
   ПОДСТРОКА(Контрагенты.ИсточникИнформации,1) <> &пст

вот тока если там пробел...
11 Рэйв
 
10.01.07
13:03
(7)Не знаю как у тебя в консоли отчетов, но у меня в произвольном запросе запросто хавает конструкцию


Контрагенты.ИсточникИнформации <> ""
12 rom
 
10.01.07
13:04
(9) А если будет строка из пробелов?
13 rom
 
10.01.07
13:05
(10) А если будет строка с пробелом между словами?
14 Murdoch
 
10.01.07
13:06
и я о том же, нужны только строки с символами отличными от пробелов
15 coder1cv8
 
10.01.07
13:06
(12) поэтому лучше всё же лучше прикрутить здесь ПОДОБНО
16 Murdoch
 
10.01.07
13:08
может кто-то уже прикручивал ?

как этому ПОДОБНО задать условие наличия только одних пробелов в любом количестве ?

или наоборот наличия всего-чего угодно, кроме пробелов.
17 coder1cv8
 
10.01.07
13:08
Попробуй вот:
ГДЕ
   ПОДСТРОКА(Контрагенты.ИсточникИнформации,1) НЕ ПОДОБНО %
18 coder1cv8
 
10.01.07
13:11
+(17) гоню немного, символов надо брать побольше! )))
19 rom
 
10.01.07
13:12
(0)(14) "у которых этот реквизит не пустой, т.е. заполнен хотя бы чем-то кроме пробелов" и "только строки с символами отличными от пробелов" это разные вещи ИМХО
20 Murdoch
 
10.01.07
13:14
для визуального восприятия человека, пробел от пустого места ничем не отличается...
21 rom
 
10.01.07
13:19
Если тебе подойдут "только строки с символами отличными от пробелов" тогда можно попробовать

ГДЕ
   Контрагенты.ИсточникИнформации ПОДОБНО [^ ]

А если надо "у которых этот реквизит не пустой", т.е. СОКРЛП(ИсточникИнформации) = "" тогда запросом не выйдет наверное
22 Murdoch
 
10.01.07
13:21
(21)
это подходит только для строк с длиной 1, и когда это единственный символ в строке не пробел :))

совсем не то
23 coder1cv8
 
10.01.07
13:22
+(18) а впрочем, какая разница...
24 Murdoch
 
10.01.07
13:22
1.5 года назад я уже создавал подобный отчет... но файл давно забыт... сейчас никак не могу сообразить, что нужно сделать.

а ведь все элементарно просто... взять все строки с непустыми на человеческий взгляд значениями
25 rom
 
10.01.07
13:23
А так?

ГДЕ
   Контрагенты.ИсточникИнформации НЕ ПОДОБНО %[ ]%
26 Murdoch
 
10.01.07
13:25
ГДЕ
   Контрагенты.ИсточникИнформации ПОДОБНО "%[^ ]%"

вот как :)))

УРАААА !!!
27 Murdoch
 
10.01.07
13:26
попоробуй догадайся используя информации из ЖКК... мозги свернешь :)
28 rom
 
10.01.07
13:26
Коллективный разум рулит!
29 Murdoch
 
10.01.07
13:27
всем СПАСИБО !
30 coder1cv8
 
10.01.07
13:27
ИМХО, строки с одними пробелами никак не определить...
31 rom
 
10.01.07
13:28
Только учти что если у тебя например будет не пустая строка с пробелом то она тоже не будет выбрана
32 rom
 
10.01.07
13:28
(30) Запросом действительно не получится
33 Murdoch
 
10.01.07
13:28
мне и не нужны пробелы
34 rom
 
10.01.07
13:29
Короче строка "мне и не нужны пробелы" в твою выборку не попадет так же, как и строка "               "
35 MikleV
 
10.01.07
13:30
(30) да ладно)
36 rom
 
10.01.07
13:30
(35) Если знаешь как - напиши
37 coder1cv8
 
10.01.07
13:32
(35) запросом естественно
38 rom
 
10.01.07
13:33
(37) СОКРЛП любой может проверить ;)
39 rom
 
10.01.07
13:35
(35) Нt все так просто, как кажется на первый взгляд
40 coder1cv8
 
10.01.07
13:36
(35)
Кроме что так:
ПОДСТРОКА(Поле,1)<>"" И ПОДСТРОКА(Поле,1)<>" "
41 Murdoch
 
10.01.07
13:38
(34)  попадает
42 rom
 
10.01.07
13:39
(40) А ПОДСТРОКА работает разве не с тремя параметрами?
43 Murdoch
 
10.01.07
13:39
ВЫБРАТЬ
   Контрагенты.Ссылка,
   Контрагенты.ИсточникИнформации
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.ИсточникИнформации ПОДОБНО "%[^ ]%"

попадают все строки кроме пустых или заполненных пробелами
44 Murdoch
 
10.01.07
13:40
да это неочевидно, зато работает на УРА, быстро и качественно.
45 coder1cv8
 
10.01.07
13:42
(42) ну да, забыл просто, выбираем один символ.
46 MikleV
 
10.01.07
13:43
(36) попой об косяк (С) Таня
з.ы. можно 100%
47 rom
 
10.01.07
13:44
(46) Ну так напиши
48 rom
 
10.01.07
13:47
(42) Так а если символ не с первой позиции будет, например пять пробелов подряд?
49 Murdoch
 
10.01.07
13:52
я же говорю - работает :))
50 MikleV
 
10.01.07
13:52
возьмём первые двадцать символов.
ВЫБОР КОГДА на двадцать символов
в строке .вот и всё.
з.ы. далее неохота думать, то есть попроще делать .
51 coder1cv8
 
10.01.07
13:53
(48) да я сообразил уже, что не прокатит, это так мысли в слух...
52 Murdoch
 
10.01.07
13:53
рациональное мышление и логика отказывают напрочь :))

а запрос - работает.
53 rom
 
10.01.07
13:54
(50) РЖУНИМАГУ
54 rom
 
10.01.07
13:57
(52) Не понятно почему у тебя попадают строки типа  "мне и не нужны пробелы". Они должны отбраковываться по моему ;)
55 coder1cv8
 
10.01.07
13:58
(50) то есть это ответ нет, т.к. мы говорим именно о строках НЕОГРАНИЧЕННОЙ длинны
(52) чудес не бывает.
56 rom
 
10.01.07
14:00
(54) Реально работает. Только что проверил - не поленился! ;)
57 coder1cv8
 
10.01.07
14:01
(56) ага. до меня то же дошло, почему работает. ))
58 coder1cv8
 
10.01.07
14:01
надо запомнить...
59 rom
 
10.01.07
14:01
Оказывается разные вещи:

НЕ ПОДОБНО "%[ ]%"
ПОДОБНО "%[^ ]%"
60 rom
 
10.01.07
14:04
По моему это надо в базу знаний ;) Интересная штука
61 Murdoch
 
10.01.07
14:05
я уже 2й раз порекомендовал ее туда :)
62 rom
 
10.01.07
14:06
Почему же все таки это ПОДОБНО "%[^ ]%" срабатывает - никак не пойму!
63 coder1cv8
 
10.01.07
14:14
(62) подумай не много, это просто.
64 rom
 
10.01.07
14:28
Просто на самом деле это уж так SQL интерпретирует этот запрос. А вообще не поймешь как это должно работать на самом деле. Надо действительно запомнить.

Наверно у % при обработке приоритет выше чем у [^ ]. Ведь строка "мне и не нужны пробелы" и соответствует и не соответствут условию одновременно!
65 MikleV
 
10.01.07
14:37
(53) бгг.. ну так работать то будет)
а про рациональность разговора не было)
66 rom
 
10.01.07
15:27
(65) Со строками неограниченной длины как у автора не будет ;)
67 MikleV
 
10.01.07
15:42
(66) ты хошь сказать что ПОДСТРОКА не будет работать с такой строкой?
я имел ввиду 20 конструкций
выбор
когда
ПОДСТРОКА "сравнение на пробел"
тогда
выбор
когда
когда
:)
тупо)
68 rom
 
10.01.07
15:47
(67) Ноукоммент
69 Murdoch
 
10.01.07
15:51
"%[^ ]%" означает -- "все что угодно" между чем есть один "не пробел" :))
70 Murdoch
 
10.01.07
15:51
вобщем то логично :)

только, сразу, как то мимо проскакиваешь :)))
71 rom
 
10.01.07
16:00
(69)(70) Я уже догнал ;)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой