![]() |
![]() |
![]() |
|
Как в запросе проверить на пустую строку? | ☑ | ||
---|---|---|---|---|
0
mikecool
05.05.08
✎
22:38
|
В смысле аналог TRIM или СОКРЛП ?
|
|||
1
mikecool
05.05.08
✎
22:39
|
ни одной книжки под рукой, сам не знаю/не помню, а запросец подправить нада...
а франь подсунул кривое обновление... |
|||
2
Конфигуратор Сеня
05.05.08
✎
22:39
|
да ну тебя...
|
|||
3
mikecool
05.05.08
✎
22:40
|
(2) редиска... я же тебя не запросы писать заставляю :)
|
|||
4
mikecool
05.05.08
✎
22:40
|
ладна... подберем перебором :)
|
|||
5
mikecool
05.05.08
✎
23:00
|
не получается перебор... :(
|
|||
6
GenV
05.05.08
✎
23:13
|
(0) А тебе проверку на полностью пустую строку надо (т.е. члибо пустую, либо содержащюю пробелы)? Или все таки есть другие символы и нужно их отсечь?
Первый вариант можно попробывать через сортировку. Второй я не знаю как :( |
|||
7
mikecool
05.05.08
✎
23:16
|
(6) не, проверить на полностью пустую строку, т.е. аналог СОКРЛП...
|
|||
8
Immortal
05.05.08
✎
23:18
|
(0) почти никак..без извратов не получиццо
|
|||
9
mikecool
05.05.08
✎
23:22
|
а пустая строка является значением NULL?
|
|||
10
Immortal
05.05.08
✎
23:25
|
(9) если там пробелы есто то нет
да и без пробелов имхо не будет NULL, а будет "" |
|||
11
mikecool
05.05.08
✎
23:29
|
таки как мне сравнить строку из базы с ""?
блин, вроде простая задача для скуля, но не для восьмерки.. :( |
|||
12
GenV
05.05.08
✎
23:30
|
(7) Попробуй добавить поле-флаг где прописать типа:
ВЫБОР КОГДА НашеПоле < &ПустаяСтрока ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КАК ПолеФлаг Параметр ПустаяСтрока = "_______1" (где вместо "_" - пробелы и их должно быть максимальное возможное количество для строки) Может подойдет :) (8) Мtня изврат тоже заинтересовал. Хотя бы идею ^) Как-то тоже сталкивался с такой задачей. |
|||
13
Immortal
05.05.08
✎
23:33
|
(12)Текст = " ГДЕ ИсходнаяСтрока = """;
Пробел = " "; Для Инд=1 по МаксПробелов цикл Текст = Текст + "ИЛИ ИсходнаяСтрока = " + Пробел + "; Пробел= Пробел + " "; КонецЦикла; |
|||
14
GenV
05.05.08
✎
23:37
|
(12) Спасибо. По крайней мере, при таком условии, проверка будет однозначно правильная.
|
|||
15
Immortal
05.05.08
✎
23:37
|
кстати, больше меньше тоже мысль..
только как он их сравнивает? |
|||
16
GenV
05.05.08
✎
23:37
|
(14) - (13)
|
|||
17
Immortal
05.05.08
✎
23:38
|
(15)-(12) -)
|
|||
18
mikecool
05.05.08
✎
23:39
|
(13) не, должно же быть решение проще...
|
|||
19
NewNick
05.05.08
✎
23:41
|
тогда как варинт юзать подобно %[^{тут перебираем все не пробелеистые символы, хз как}]%
|
|||
20
NewNick
05.05.08
✎
23:41
|
только чето все не то
|
|||
21
mikecool
05.05.08
✎
23:44
|
вот же блин... надо всего лишь проверить, пустой ИНН у конры или нет, а проблема - неразрешимая :)
|
|||
22
Immortal
05.05.08
✎
23:44
|
(18) строка кстати это что? если реквизит чего либо то можно сначала в базе найти эти записи, слить их во временную таблицу, а потом в запросе NOT IN
|
|||
23
NewNick
05.05.08
✎
23:45
|
(21) так там же есть ограничение по длине все намного проще хотя и не элегантно конечно
|
|||
24
mikecool
05.05.08
✎
23:46
|
(22) ИНН - реквизит контрагента, строка(12)
нот ин чего? |
|||
25
Immortal
05.05.08
✎
23:46
|
(21) а=))
ИНН строковый..мде..где то тут пробегала корячка как строку в число переделать.. а там уж и проверить можно.. только там тоже с извратом |
|||
26
mikecool
05.05.08
✎
23:46
|
перепробовал TRIM, СокрЛП, ПустаяСтрока - не угадал ни одной буквы...
|
|||
27
NewNick
05.05.08
✎
23:47
|
вбей массив в цикле из 13 значений и проверяй что не в (&массивпустыхстрок)
|
|||
28
Immortal
05.05.08
✎
23:47
|
(24) НЕ В(ТаблицеКонтровСХеровымиИНН)
но я так понял тебе надо именно этих и найти? c пустыми,или же просто их отфильтровать? |
|||
29
NewNick
05.05.08
✎
23:49
|
(25)
Функция ТекстЗапросаИзСтрокиВЧисло(ИмяПоля, ДлинаСтроки, СимволРазделитель=".") текст = ""; текст2 = ""; Для позиция = 1 по ДлинаСтроки цикл текст = "("+?(текст="","",текст+ Символы.ПС + " *ВЫБОР КОГДА ПОДСТРОКА("+имяПоля+","+позиция+",1)="""+СимволРазделитель+""" ТОГДА 1 ИНАЧЕ 10 КОНЕЦ +")+Символы.ПС+"ВЫБОР "; Для цифирка = 0 по 9 цикл текст = текст + Символы.ПС + " КОГДА ПОДСТРОКА("+имяПоля+","+позиция+",1)="""+цифирка+""" ТОГДА "+цифирка; КонецЦикла; текст = текст + Символы.ПС + " ИНАЧЕ 0 КОНЕЦ)"; текст2 = текст2 + Символы.ПС + " КОГДА ПОДСТРОКА("+имяПоля+","+позиция+",1)="""+СимволРазделитель+""" ТОГДА "+формат(pow(10,ДлинаСтроки-позиция),"ЧГ="); КонецЦикла; возврат текст + Символы.ПС + "/ ВЫБОР " + текст2+Символы.ПС + " ИНАЧЕ 1 КОНЕЦ " + СИмволы.ПС +" * ВЫБОР КОГДА "+ИмяПоля+" ПОДОБНО ""%-%"" ТОГДА -1 ИНАЧЕ 1 КОНЕЦ"; КонецФункции ;) |
|||
30
GenV
05.05.08
✎
23:50
|
(22) Тоже вариант. Тем более длина ограничена.
(15) истина будет для пустой строки, и строк с пробелами в начале (главное чтобы не было перебора длины), ну и вместо единицы нужно поставить самый первый символ по коду. Если пробелов меньше вроде тоже нормально. |
|||
31
Immortal
05.05.08
✎
23:51
|
(29) ага, это и было.=)
|
|||
32
Immortal
05.05.08
✎
23:52
|
(30) нада посмотреть=)
вот как даламаю висту мож и посмотрю=) |
|||
33
mikecool
05.05.08
✎
23:53
|
запрос на поиск контров с одинаковым ИНН:
ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИНН = &ИНН И Контрагенты.КПП = &КПП И Контрагенты.Ссылка <> &Ссылка И НЕ (Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ФизЛицо) И <здесь должна быть функция>(Контрагенты.ИНН)="""") |
|||
34
mikecool
05.05.08
✎
23:54
|
уже появляется мысль: и нафик я подался к этой восьмерке, когда звали писать под оракуль? :)
|
|||
35
NewNick
05.05.08
✎
23:55
|
(31) а в кз вариант "конкурента" ;) (сорь за оффтоп)
|
|||
36
Immortal
05.05.08
✎
23:56
|
(34) гг=))не, "ораклоид" как то не звучит=)
|
|||
37
NewNick
05.05.08
✎
23:57
|
(33) с таким подходом пиши уж
И НЕ (Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ФизЛицо) И Контрагенты.ИНН<"0" |
|||
38
mikecool
05.05.08
✎
23:58
|
(36) ораклист :))
|
|||
39
mikecool
05.05.08
✎
23:58
|
(37) гм... щас попробую...
|
|||
40
GenV
05.05.08
✎
23:58
|
(34) Попробуй:
Контрагенты.ИНН < &ПустаяСтрока ПустаяСтрока - 11 пробелов и 1 |
|||
41
GenV
06.05.08
✎
00:00
|
(37) " 0" пройдет :(
|
|||
42
Immortal
06.05.08
✎
00:00
|
(40) да да, должно быть верно так.
|
|||
43
NewNick
06.05.08
✎
00:03
|
(41) угу пройдет.. тогда меньше или равно чем 12 пробелов подряд ))
|
|||
44
mikecool
06.05.08
✎
00:04
|
поглядел на время - у меня полночь, и решил: а ну его нафик, это сравнение...
завтра придет прог из франя, пусть он свою корявку и правит(поскольку запрос изначально был некорректно им написан)... оставлю только свою проверку на физлицо еще надо обмен проводить с филиалами... |
|||
45
GenV
06.05.08
✎
00:05
|
(43) Точно, так будет лучше :)
|
|||
46
NewNick
06.05.08
✎
00:10
|
кстати я чет не могу сразу понять
а условие на >=" " И <=N*" " даст ли нам чисто варианты из пустых строк с кол-вом пробелов от 1 до N |
|||
47
Tapo4ek
06.05.08
✎
09:23
|
А че (ВЫБОР КОГДА Таблица.Поле = """" тогда) не канает???
|
|||
48
Tapo4ek
06.05.08
✎
09:23
|
А NULL вообще полуается только когда поле не найдено или строка итога.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |