Имя: Пароль:
1C
 
СокрЛП - только для текста запроса
0 Алексей777
 
27.01.11
13:41
Всем привет. Можем ли мы в запросе 1С у значения убрать слева и справа пробелы как это делает функция СокрЛП?
1 PR
 
27.01.11
13:41
Нет.
2 unknown181538
 
27.01.11
13:43
Запрос вроде сам убирает.
3 supremum
 
27.01.11
13:43
(0) Подобно в помощь
4 Алексей777
 
27.01.11
13:46
(3) каким образом подобно может помочь?
5 PR
 
27.01.11
13:50
(4) Да никаким. Просто ему тоже хочется что-нить сказать :))
6 КонецЕсли
 
27.01.11
13:57
(4) Выбор когда Реквизит ПОДОБНО " %" Тогда ПОДСТРОКА (Реквизит,2,200)
когда Реквизит ПОДОБНО "  %" Тогда ПОДСТРОКА (Реквизит,3,200)
когда Реквизит ПОДОБНО "   %" Тогда ПОДСТРОКА (Реквизит,4,200)
....

ыыыыы :)))

а справа пробелы есть только у реквизитов фиксированной длины.
7 supremum
 
27.01.11
14:06
(5) см (6)
8 Алексей777
 
27.01.11
14:14
(6) у меня как раз реквизит фиксированной длины - это номер документа :)
9 hhhh
 
27.01.11
14:35
(8) ну у номера длина небольшая, тут метод (6) 100% прокатит.
10 hhhh
 
27.01.11
14:37
(9)+ даже можно не через подобно, а через ВЫБОР.
11 PR
 
27.01.11
14:37
(7) Во-первых тогда уж не ПОДОБНО, а ПОДСТРОКА.
А во-вторых через пятую точку и кучу когда в выборе это да, возможно, но если так рассуждать, то можно и дату без времени в запросе получить в виде строки :)))))
12 supremum
 
27.01.11
14:43
(11) Это уже детали ), главное что можно )
13 Ненавижу 1С
 
гуру
27.01.11
14:45
что ты хочешь сделать то?
14 Slon747
 
27.01.11
14:45
Если v8.2, то вроде как ВЫРАЗИТЬ здесь пригодится:
"В 1С:Предприятии 8.2 операция языка запросов ВЫРАЗИТЬ возвращает строку переменной длины (без концевых пробелов)
при приведении к типу СТРОКА"
15 Алексей777
 
27.01.11
14:48
(13) хочу убрать все пробелы справа у номера
16 Sammo
 
27.01.11
14:49
СКД еще не предлагали?
17 Алексей777
 
27.01.11
14:52
если использовать выбор когда подстрока(номер,1,1) = " " тогда
когда подстрока(номер,2,2) = " " тогда
...
т.е. находим самый первый пробел и отсекаем, а вот если это нужный пробел и после него снова продолжается номер ... вот тут то я соглашусь с PR
18 cViper
 
27.01.11
15:03
(0) К сожалению в 1С нет регулярных выражений (((
19 Ненавижу 1С
 
гуру
27.01.11
15:05
(15) что это даст тебе?
20 Алексей777
 
27.01.11
15:15
выкладываю данное чудо, вот только скорость отчета сократилась блин даже не знаю во сколько раз. Номер у меня 20-ти значный.

ВЫБОР
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 2, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 1)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 3, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 2)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 4, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 3)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 5, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 4)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 6, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 5)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 7, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 6)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 8, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 7)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 9, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 8)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 10, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 9)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 11, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 10)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 12, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 11)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 13, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 12)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 14, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 13)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 15, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 14)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 16, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 15)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 17, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 16)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 18, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 17)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 19, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 18)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 20, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 19)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 21, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 20)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 22, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 21)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 23, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 22)
   КОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 24, 2) = "  "
       ТОГДА ПОДСТРОКА(ТребованиеНакладнаяМатериалы.Заказ.Номер, 1, 23)
КОНЕЦ
21 supremum
 
27.01.11
15:18
(20) Корявые данные - корявый код.
22 Алексей777
 
27.01.11
15:18
(19) номер без пробелов - он нужен для того, чтобы результат объединения один и тот же номер при группировке не выводил несколько раз. В объединении используются два запроса в одном номер без пробелов, а в другом с пробелами
23 IamAlexy
 
27.01.11
15:19
вкорячить функцию в общий модуль низя было ?
24 Алексей777
 
27.01.11
15:19
(21) есть лучше? напиши
25 PR
 
27.01.11
15:20
(12) Можно ли написать драйвер видеокарточки, работающий на платформе 1С?
26 PR
 
27.01.11
15:21
(14) О, вот оно как! Спасибо за инфу :))
27 Алексей777
 
27.01.11
15:21
(23) речь о запросе
28 supremum
 
27.01.11
15:22
(24) Это значит, чтобы не было корявого кода не надо допускать корявости в данных. На кой нужны лидирующие пробелы в номере?
29 IamAlexy
 
27.01.11
15:25
(27) в скд вроде можно было - что мешает использовать СКД ?
30 supremum
 
27.01.11
15:26
(25) Можно ли убрать лишние пробелы в запросе?
31 Алексей777
 
27.01.11
15:43
согласен что они не нужны, но как данность от неё уже никуда не уйти, согласен, что можно отчет не только запросом вывести, но это уже не тема ветки
32 supremum
 
27.01.11
15:46
(31) Иначе можно получить табличку с номерами и ссылками на документы, убрать лишние пробелы с помощью СокрЛП, и подцепить ее уже в запросе.
33 Алексей777
 
27.01.11
16:06
(32) как вариант попробую и сравню скорость.
34 Живой Ископаемый
 
27.01.11
16:09
2(24) пойнт не в том что лучше можно написать, а в том что при крявых данных хорошего кода не написать. В частности зачем дебильное объединение по номеру? Что нельзя по ссылке объединить? Наверное уже нельзя - потому что данные этого не предусматривают.
35 Алексей777
 
27.01.11
16:18
(34) LTRIM и RTRIM - скуль - крявых данных не бывает
36 Алексей777
 
27.01.11
16:27
кстати скорость отчета сократилась не намного, так что работает чудо