Имя: Пароль:
1C
1С v8
Отобрать в запросе только те, что можно привести к числу
,
0 live in sky dreams
 
05.05.17
09:42
Подскажите, как решить задачу?
Есть доки у которых есть номера (доп. поле тип: строка).
Часть доков с номерами, содержащими префикс (например АА000000001)
Есть часть доков с номерами без префикса (00000000001)
Причем, префиксы разные. АА..АС..АГ и т.д.

Мне нужно выбрать только те, которые не содержат префиксы.. То есть только те, у которых поле доп. номер можно привести к числу. Возможно ли это сделать в запросе?
1 polosov
 
05.05.17
09:46
(0) ЕстьNULL(ВЫРАЗИТЬ ССылка.Номер КАК Число (10,2), "Не число")
2 DrShad
 
05.05.17
09:46
НЕ ПОДОБНО + регулярка на вхождение букв
3 polosov
 
05.05.17
09:47
+(1) А не, вру. Исключение будет
4 FIXXXL
 
05.05.17
09:47
(1) ошибку выдаст

"АА..АС..АГ и т.д. "
если все с "А" начинаются - ПОДСТРОКА используй
5 Рэйв
 
05.05.17
09:49
(0)Проще поставить условие на 3  строки в цикле обработки результата
6 YFedor
 
05.05.17
09:50
Эх, как я скучаю по семерке ...
7 polosov
 
05.05.17
09:52
(6) А что пой ней скучать.
В 8ке тоже можешь все запросом выбрать и потом в цикле как хочешь обрабатывать.
8 live in sky dreams
 
05.05.17
09:52
Префиксы не все начинаются с "А"..
там их множество великое..
(3)ага, сперва тоже про выразить вспомнил...
(2) можно подробнее?
9 polosov
 
05.05.17
10:05
(8)
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

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

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

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

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

Причем перед этой последовательностью может располагаться произвольный набор символов.
10 AlvlSpb
 
05.05.17
11:07
ГДЕ Документ.Номер ПОДОБНО "[^А-Я]%"
Отберет только номера где первый знак НЕ буква
11 YFedor
 
05.05.17
11:09
(7) В семерке просто Число(Что-то), если преобразовалось - на выходе конкретное число, если не преобразовалось - на выходе снова число - 0. А в восьмерке все через Ж, причем непонятно зачем
12 live in sky dreams
 
05.05.17
11:32
(9)(10) это отработает если в символах только латиница и символы могут присутствовать в номере обязательно в начала.
А есть и "0H", где Н - это "Аш" английская..
Номер может быть как 0H18, так и 0H0T000018
13 live in sky dreams
 
05.05.17
11:34
Я могу написать Если Номер подобно "[0-9]%", но это отберет только те номера, где первый символ число. Остальных буквенных или спецсиволов в других частях номера это не исключит
14 Fish
 
05.05.17
11:36
(11) "если преобразовалось - на выходе конкретное число, если не преобразовалось - на выходе снова число - 0." - А если это число - ноль? Как отличишь?
15 live in sky dreams
 
05.05.17
11:40
В квадратных скобках можно указывать несколько вариантов?
Например [0-9\ ] будет означать "любое число или пробел"?
16 catena
 
05.05.17
11:46
(13)А длина номера не фиксированная чтоли?
17 Неверный Параметр И
 
05.05.17
11:49
(0) где номер не подобно "%[тут твои запрещенные символы]%"

(15) Справка –> 1С:Предприятие –>Встроенный язык –> Работа с запросами –> Синтаксис языка запросов –> Использование выражений в языке запросов –> Логические выражения –> ПОДОБНО – оператор проверки строк на подобие шаблону
18 live in sky dreams
 
05.05.17
11:50
(17) запрещенные символы - это все существующие символы кроме чисел на всех языках?
Где справка по ПОДОБНО находится я знаю, спасибо
19 catena
 
05.05.17
11:51
(15)Можно. Там в (9) прям с примером даже...
20 Неверный Параметр И
 
05.05.17
11:52
(18) И что там написано по поводу множественных вхождений?
21 Неверный Параметр И
 
05.05.17
12:02
И поищи в уникоде цифры, кстати. Где нибудь около
U+10E61. Многоязычный умник ты наш.
22 live in sky dreams
 
05.05.17
12:04
работает вот так(условие запроса):

НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9][0-9]"
ИЛИ НомерДоп ПОДОБНО "[0-9]"

Выбирает номера, которые состоят из чисел, любой длины в пределах длины реквизита.
Я могут собирать запрос и по циклу, но может есть какой то вариант упростить конструкцию?
23 Неверный Параметр И
 
05.05.17
12:10
Не будет работать для номеров, начинающихся с пробела.

У тебя три возможности воздействия на результат запроса: синтаксис шаблона, логические условия с шаблоном и операции с выбраным множеством.

Впрочем, твой готовый вариант все равно будет циклом.
24 YFedor
 
05.05.17
12:22
(14) В 99% случаев это не нужно, а если нужно, то нужна всего лишь функция проверки типа значения.

Теперь в 99% случаев нужно сначала проверить, что можно преобразовать, а потом преобразовать

В семерошном варианте в 99% случаев нужно просто преобразовать
25 Optan
 
05.05.17
12:48
(0) Если номер фиксированной длины можно попробовать создать временную таблицу: что то похожее на "1" - 1, "2" - 2...

И соединять символы номера с ней
26 тарам пам пам
 
05.05.17
13:54
(22) что за извращение? поставь условие НЕ ПОДОБНО "%[^0-9]%"
27 live in sky dreams
 
05.05.17
15:28
(26) Е мое.. точно же! Спасибо тебе, мил человек!