Отобрать в запросе только те, что можно привести к числу #796828


#0 by live in sky dreams
Подскажите, как решить задачу? Есть доки у которых есть номера (доп. поле тип: строка). Часть доков с номерами, содержащими префикс (например АА000000001) Есть часть доков с номерами без префикса (00000000001) Причем, префиксы разные. АА..АС..АГ и т.д. Мне нужно выбрать только те, которые не содержат префиксы.. То есть только те, у которых поле доп. номер можно привести к числу. Возможно ли это сделать в запросе?
#1 by polosov
ЕстьNULL(ВЫРАЗИТЬ ССылка.Номер КАК Число (10,2), "Не число")
#2 by DrShad
НЕ ПОДОБНО + регулярка на вхождение букв
#3 by polosov
+ А не, вру. Исключение будет
#4 by FIXXXL
ошибку выдаст "АА..АС..АГ и т.д. " если все с "А" начинаются - ПОДСТРОКА используй
#5 by Рэйв
Проще поставить условие на 3  строки в цикле обработки результата
#6 by YFedor
Эх, как я скучаю по семерке ...
#7 by polosov
А что пой ней скучать. В 8ке тоже можешь все запросом выбрать и потом в цикле как хочешь обрабатывать.
#8 by live in sky dreams
Префиксы не все начинаются с "А".. там их множество великое.. ага, сперва тоже про выразить вспомнил... можно подробнее?
#9 by polosov
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ. Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки: % (процент): последовательность, содержащая любое количество произвольных символов _ (подчеркивание): один произвольный символ […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона. [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ. Например, шаблон “%АБВ[0-9][абвг]_абв%” СПЕЦСИМВОЛ “” означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.
#10 by AlvlSpb
ГДЕ Документ.Номер ПОДОБНО "[^А-Я]%" Отберет только номера где первый знак НЕ буква
#11 by YFedor
В семерке просто Число(Что-то), если преобразовалось - на выходе конкретное число, если не преобразовалось - на выходе снова число - 0. А в восьмерке все через Ж, причем непонятно зачем
#12 by live in sky dreams
это отработает если в символах только латиница и символы могут присутствовать в номере обязательно в начала. А есть и "0H", где Н - это "Аш" английская.. Номер может быть как 0H18, так и 0H0T000018
#13 by live in sky dreams
Я могу написать Если Номер подобно "[0-9]%", но это отберет только те номера, где первый символ число. Остальных буквенных или спецсиволов в других частях номера это не исключит
#14 by Fish
"если преобразовалось - на выходе конкретное число, если не преобразовалось - на выходе снова число - 0." - А если это число - ноль? Как отличишь?
#15 by live in sky dreams
В квадратных скобках можно указывать несколько вариантов? Например [0-9 ] будет означать "любое число или пробел"?
#16 by catena
А длина номера не фиксированная чтоли?
#17 by Неверный Параметр И
где номер не подобно "%[тут твои запрещенные символы]%" Справка –> 1С:Предприятие –>Встроенный язык –> Работа с запросами –> Синтаксис языка запросов –> Использование выражений в языке запросов –> Логические выражения –> ПОДОБНО – оператор проверки строк на подобие шаблону
#18 by live in sky dreams
запрещенные символы - это все существующие символы кроме чисел на всех языках? Где справка по ПОДОБНО находится я знаю, спасибо
#19 by catena
Можно. Там в прям с примером даже...
#20 by Неверный Параметр И
И что там написано по поводу множественных вхождений?
#21 by Неверный Параметр И
И поищи в уникоде цифры, кстати. Где нибудь около U+10E61. Многоязычный умник ты наш.
#22 by live in sky dreams
работает вот так(условие запроса): ИЛИ НомерДоп ПОДОБНО "[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 by Неверный Параметр И
Не будет работать для номеров, начинающихся с пробела. У тебя три возможности воздействия на результат запроса: синтаксис шаблона, логические условия с шаблоном и операции с выбраным множеством. Впрочем, твой готовый вариант все равно будет циклом.
#24 by YFedor
В 99% случаев это не нужно, а если нужно, то нужна всего лишь функция проверки типа значения. Теперь в 99% случаев нужно сначала проверить, что можно преобразовать, а потом преобразовать В семерошном варианте в 99% случаев нужно просто преобразовать
#25 by Optan
Если номер фиксированной длины можно попробовать создать временную таблицу: что то похожее на "1" - 1, "2" - 2... И соединять символы номера с ней
#26 by тарам пам пам
что за извращение? поставь условие НЕ ПОДОБНО "%[^0-9]%"
#27 by live in sky dreams
Е мое.. точно же! Спасибо тебе, мил человек!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С