Имя: Пароль:
1C
1С v8
Как запросом отобрать серийные номера заканчивающиеся на ...
0 mvgfirst
 
06.02.13
12:29
Конфигурация УТ 10.3.

Стоит задача написать простенький запрос который будет находить документы ПТиУ в которых есть серийные номера заканчивающиеся на n-ное количество цифр

Несмотря на кажущуюся примитивность застрял.

Использую конструкцию СерийныйНомер.Код Подобно "%123" и не получают результат, хотя визуально наблюдаю серийники заканчиваюищеся на такую компибнацию

причина в том что в УТ 10.3 в справочнике СерийныеНомера сам номер указан в поле код, которое является строкой фиксированной длинны.

Получается что пробелы которыми 1С дополняет серийный номер не дают выполнится такому запросу правильно.

Использовать ПОДОБНО "%123%" не могу т.к. тогда выдает и другие серийники у которых эта комбинация встречается не в конце номера.

Как выйти из положения, подскажите
1 Wobland
 
06.02.13
12:30
подобно %[0-9][0-9][0-9]
не читал
2 mikecool
 
06.02.13
12:31
3 mvgfirst
 
06.02.13
14:16
(2)  прочитал тему, не нашел там ответа на свой вопрос.
Возможно я не умею читать, но там как-то все слишком запутанно.

Можно в кратце, суть идеи?

(1) как эта конуструкция отсечет "хвостовые" пробелы?
4 DrShad
 
06.02.13
14:18
(3) а как то что в (0) их отсечет?
5 DrShad
 
06.02.13
14:19
для того чтоб выйти из положения видимо нужно отсечь пробелы
6 НЕА123
 
06.02.13
14:19
используя (1) тип так
СерийныйНомер.Код Подобно "%123" И НЕ СерийныйНомер.Код Подобно "%123[0-9]"
?
7 DrShad
 
06.02.13
14:19
или в регулярку прописать что до конца строки пробелы идут
8 НЕА123
 
06.02.13
14:20
СерийныйНомер.Код Подобно "%123%" И НЕ СерийныйНомер.Код Подобно "%123[0-9]"
9 DrShad
 
06.02.13
14:21
(8) [0-9] пробелы сюда не входят :))))
10 НЕА123
 
06.02.13
14:21
(6)(8)
неа. похоже не то.
11 НЕА123
 
06.02.13
14:22
(10)+
или же все-таки то?
12 НЕА123
 
06.02.13
14:23
вот так должно прокатить
СерийныйНомер.Код Подобно "%123%" И НЕ СерийныйНомер.Код Подобно "%123[0-9]%"
13 НЕА123
 
06.02.13
14:25
(9)
а нам ведь пох на пробелы.
главное, чтобы цифири после 123 не было.
14 Wobland
 
06.02.13
14:25
(11) "12345 " - истина и не истина = ложь
а "заканчивается" на три цифры
15 ZoRN
 
06.02.13
14:27
trim(), сокрЛП()
16 Wobland
 
06.02.13
14:28
(15) это неспортивно
17 mikecool
 
06.02.13
14:28
Выразить() убирает концевые пробелы, емнип
18 Шапокляк
 
06.02.13
14:29
а если так
СерийныйНомер.Код Подобно "%123" Или СерийныйНомер.Код Подобно "%123 %"
19 ZoRN
 
06.02.13
14:31
ВЫРАЗИТЬ()
20 Wobland
 
06.02.13
14:33
выбрать "#"+выразить("|123|              " как строка(200))+"#"
#|123|              #
21 Wobland
 
06.02.13
14:51
вот три цифры в конце. с ограничением на длину строки

выбрать
выбор когда
&стр подобно "%[0-9][0-9][0-9]"
или &стр подобно "%"+выразить(" " как строка(200))
тогда истина иначе ложь конец
22 НЕА123
 
06.02.13
14:55
ВЫБРАТЬ
   ВЫБОР
       КОГДА СерийныйНомер.Код +" " ПОДОБНО "%123[ ]%"
           ТОГДА ИСТИНА
       ИНАЧЕ ЛОЖЬ
   КОНЕЦ КАК Поле1
это для заканчивающихся на "123"

если три цифры, то как Wobland

ВЫБРАТЬ
   ВЫБОР
       КОГДА СерийныйНомер.Код +" " ПОДОБНО "%[0-9][0-9][0-9][ ]%"
           ТОГДА ИСТИНА
       ИНАЧЕ ЛОЖЬ
   КОНЕЦ КАК Поле1

ЗЫ
что надо ТС, то пусть и выбирает
23 Wobland
 
06.02.13
14:56
(21) ан нет

выбрать
выбор когда
&стр подобно "%[0-9][0-9][0-9]"
или (&стр подобно "%"+выразить(" " как строка(200)) и &стр подобно "%[0-9][0-9][0-9]")
тогда истина иначе ложь конец
24 Wobland
 
06.02.13
14:56
(22) "123 " не прокатит

пля! что ТСу надо?
25 НЕА123
 
06.02.13
14:58
ВЫРАЗИТЬ()  пробелы не убирает.
26 Wobland
 
06.02.13
14:58
"123 морковка12" не прокатит
27 НЕА123
 
06.02.13
15:00
(24)
я думаю, все зависит от того, что он сейчас пьет.
закуска дело такое...
28 НЕА123
 
06.02.13
15:02
(26) да. страховки на пробелы внутри кода нет.
29 Reset
 
06.02.13
15:11

Выбрать "qq1233" как Стр поместить Вт Объединить все Выбрать "qq1678   " Объединить все Выбрать "qq1233 q";

Выбрать 0 как Ц Поместить Ч Объединить Выбрать 1 Объединить Выбрать 2 Объединить Выбрать 3 Объединить Выбрать 4;
Выбрать Ч1.Ц*25+Ч2.Ц*5+Ч3.Ц Как Значение Поместить Числа из Ч Как Ч1,Ч Как Ч2,Ч Как Ч3;

Выбрать Вт.Стр,Максимум(Числа.Значение) Как Длина
Поместить СДлиной
из Вт,Числа
Где Подстрока(Вт.Стр,Числа.Значение,1)<>""
Сгруппировать по Вт.Стр;

Выбрать СДлиной.Стр
из СДлиной
Где ПодСтрока(СДлиной.Стр,1,СДлиной.Длина) Подобно "%[0-9][0-9][0-9]"
30 mvgfirst
 
06.02.13
16:00
Пробелов внутри кода нет
31 Reset
 
06.02.13
16:04
(30) Это не усложняет и не упрощает задачу
32 Волесвет
 
06.02.13
16:13
!серийные номера заканчивающиеся на n-ное количество цифр

в условия загнать, что больше 99 но меньше 1000
33 666 Devil
 
06.02.13
16:24
(0) ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>)
отлично работает )
34 hhhh
 
06.02.13
17:14
(33) отсекает пробелы?
35 Шапокляк
 
06.02.13
17:16
(30) Тогда почему (18) не подходит?
36 mvgfirst
 
06.02.13
17:21
(18) Именно подходит! Сейчас как раз проверяю на рабочих данных!
37 Reset
 
06.02.13
17:22
(35) Логично. Перец из (31) неправ. Это существнно упрощает, позволяя использовать запись вида (18). Снимаю шляпу.
38 mvgfirst
 
06.02.13
17:22
(33)  длинна серийных номеров заранее неизвестноа и более того отличается от номера к номеру
39 mvgfirst
 
06.02.13
17:51
Методв (18) идеально подошел!
Всем спасибо за помощь!

Прям удивительно - получилось и оперативно и даже без троллинга!!!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший