Имя: Пароль:
1C
1С v8
Отбор по длине строки в запросе
,
0 Selma
 
15.12.15
09:15
подскажите, пожалуйста, как решить задачу: есть регистр сведений штрихкодов, он огромен. Необходимо отобрать из него записи, где длина штрихкода = 7 символам (то есть наши штрихкода). Как это можно сделать в запросе? Перебор займет слишком много времени.
1 ObjectRelation Model
 
15.12.15
09:18
Штрихкод ПОДОБНО "_______"
2 ObjectRelation Model
 
15.12.15
09:18
а вообще лучше проверять на тип штрихкода
3 Selma
 
15.12.15
09:21
(1) Спасибо! Нет, это не УТП, это рарус ТКПП, там типа штриха нету
4 Dmitriy_76
 
15.12.15
09:22
условие
Где шк=выразить(шк как строка(7))
5 Михаил 1С
 
15.12.15
09:24
(4) А ты пробовал где-то в запросах использовать "Выразить" в условиях?
По-моему, нифига не работает.
6 rs_trade
 
15.12.15
09:28
(5) Работает, но не однозначно. Весьма сомнительное условие.
7 Мэс33
 
15.12.15
09:29
(3) Почему (1) не подходит?

ПОДОБНО - позволяет сравнивать строку с шаблоном, используется когда строка поиска жестко не определена.

Построение шаблона:

    % (процент): последовательность, содержащая любое количество произвольных символов
    _ (подчеркивание): один произвольный символ
8 FIXXXL
 
15.12.15
09:32
(4) а оно не резанет строку длиной в 13 до 7?
9 Selma
 
15.12.15
09:33
(7) 1 - подходит. 2- не подходит, я ошиблась в цитировании)
10 Мэс33
 
15.12.15
09:33
(8) Не должно).
11 фобка
 
15.12.15
09:33
(8) резанет, поэтому и сравнение. А вот что будет со строкой длиной 6? Платформа хитрая может и уравнять
12 Dmitriy_76
 
15.12.15
09:39
(11) да уравняет :)))

поэтому меняем на "ПОДСТРОКА"

Где ШК =ПОДСТРОКА(ШК,1,7)
13 Dmitriy_76
 
15.12.15
09:43
+(12) тож мимо... если 6 то тоже выкатит
14 Dmitriy_76
 
15.12.15
09:44
+(13) прибавим еще условие
Где ШК =ПОДСТРОКА(ШК,1,7)
И НЕ ШК =ПОДСТРОКА(ШК,1,6)
15 Мэс33
 
15.12.15
09:49
(14) если будет 8 символов?
16 Мэс33
 
15.12.15
09:53
Надо проверить, что 7й символ существует, а 8й - не существует.
17 Мэс33
 
15.12.15
09:54
Где ПОДСТРОКА(ШК,1,7) = ШК
И ПОДСТРОКА(ШК,1,8) = ""
18 Мэс33
 
15.12.15
09:55
(17)

Где НЕ ПОДСТРОКА(ШК,1,7) = ""
И ПОДСТРОКА(ШК,1,8) = ""
19 фобка
 
15.12.15
09:56
(15) тогда шк<> лев(шк,7)..
В (14) исчерпывающее условие, в (1) тоже скорее всего
20 фобка
 
15.12.15
09:59
(17) подстрока (шк,1,8) для шк длиной в 7 символов вернет 7 символов
21 фобка
 
15.12.15
10:02
Выбрать выбор когда подстрока"1234567",1,8) = "1234567" тогда истина иначе ложь конец
22 фобка
 
15.12.15
10:04
(1) тоже работает
выбрать выбор когда "123456" подобно "_______" тогда истина иначе ложь конец
23 Мэс33
 
15.12.15
10:05
(17) Гоню:

Где НЕ ПОДСТРОКА(ШК,7,1) = ""
И ПОДСТРОКА(ШК,8,1) = ""
24 фобка
 
15.12.15
10:09
(23) да, работает
25 Мэс33
 
15.12.15
10:09
В общем варианты: (1) (23)
26 Мэс33
 
15.12.15
10:09
(23) (24) да я болею.. и на 1С уже год не писал ничего )))
27 фобка
 
15.12.15
10:10
(25) 14 тоже вариант
(26) поправляйся
28 Мэс33
 
15.12.15
10:13
(14)
Если на входе дать 6 символов, то условие:

Где ШК =ПОДСТРОКА(ШК,1,7)  // "123456" = "123456"
И НЕ ШК =ПОДСТРОКА(ШК,1,6) // не "123456" = "123456"

Выполнится.

Если же ПОДСТРОКА(ШК,1,7) вернет "123456 "?