Имя: Пароль:
1C
1С v8
Удаление части строки после точки в запросе.
0 Arutynov
 
22.08.22
09:27
Добрый день. Не подскажете как удалить в запросе часть строки после знака "." Пример - M257-M258.154 надо M257-M258
Фиксировано отрезать не могу так как длина разная и не везде точки есть.
1 Timon1405
 
22.08.22
09:29
выбор когда подстрока(поле,2,1) = "." тогда подстрока(поле,1,1)
когда подстрока(поле,3,1) = "." тогда подстрока(поле,1,2)когда подстрока(поле,3,1) = "." тогда подстрока(поле,1,2)
2 Timon1405
 
22.08.22
09:30
(1) *выбор когда подстрока(поле,2,1) = "." тогда подстрока(поле,1,1)
когда подстрока(поле,3,1) = "." тогда подстрока(поле,1,2)
когда подстрока(поле,4,1) = "." тогда подстрока(поле,1,3)
конец
3 Timon1405
 
22.08.22
09:31
или написать функцию и применить её в СКД.
в чём необходимость делать это в запросе?
4 Kassern
 
22.08.22
09:33
(0) Какая версия платформы? Если 8.3.20.1549 и выше, тогда вот https://wonderland.v8.1c.ru/blog/novye-funktsii-yazyka-zaprosov-i-sistemy-komponovki-dannykh/
5 Kassern
 
22.08.22
09:33
Лев(Left) – получает первые слева символы строки.

Прав(Right) – получает первые справа символы строки.

СтрНайти(StrFind) – находит первую позицию подстроки в строке (без учета регистра).
6 2S
 
22.08.22
09:34
(2) у него длина строк разная
7 2S
 
22.08.22
09:34
(5) +1
8 Arutynov
 
22.08.22
09:38
(2) - Работает если добавить условий. Спасибо. Просто СКД отчет. Просто хотелось именно в запросе написать.
9 Kassern
 
22.08.22
09:43
Если вы этим полем постоянно пользуетесь в разных местах и часто вам приходится обрезать строку, значит, что-то у вас не так с архитектурой. Проще хранить отдельно обрезанную часть, чем каждый раз ее вычислять лесенкой из 10+ "Выбор когда..." Не думаю, что из-за короткого текстового поля у вас сильно разбухнет база.
10 Arutynov
 
22.08.22
09:53
Это одноразовый отчет. В остальных местах правильно. Спасибо.
11 Said_We
 
22.08.22
12:54
Если платформа ниже чем Если 8.3.20, в которой ввели функцию в запросе СтрНайти(), то можно поизвращаться. Можно разобрать строку по одному символу. Найти минимум для каждой строки, где найдена точка и всё что больше позиции точки не брать. Т.е. чтобы не писать 150

"выбор когда подстрока(поле,2,1) = "." тогда подстрока(поле,1,1)"

можно получить позицию точки для каждой строки.
Закон Брукера: Даже маленькая практика стоит большой теории.