|
Получение подстроки! | ☑ | ||
---|---|---|---|---|
0
TwoWorld
25.08.11
✎
14:27
|
Есть строка, например
папап(рп.рп.)-.АБС Мне нужно получить все что стоит после точки .АВС, как сделать? Так не работает: Лев(ТС,СтрДлина(ТС)-Прав(ТС,Найти(ТС,"."))); |
|||
1
TwoWorld
25.08.11
✎
14:28
|
(0) точнее перед .АВС
|
|||
2
TwoWorld
25.08.11
✎
14:29
|
Все решено:
Лев(ТС,СтрДлина(ТС)-Найти(ТС,".")-1) |
|||
3
marty0701
25.08.11
✎
14:29
|
3 символа справа обрезать предлагать?
|
|||
4
Wobland
25.08.11
✎
14:30
|
это он тебе папап(рп скажет
|
|||
5
TwoWorld
25.08.11
✎
14:33
|
кстати нет, не взлетело!
|
|||
6
Goggy
25.08.11
✎
14:33
|
(2)или
Сред(ТС, 0, Найти(ТС,".")); |
|||
7
Wobland
25.08.11
✎
14:37
|
находишь, отрезаешь слева вместе с точкой. и так в цикле. не?
|
|||
8
Wobland
25.08.11
✎
14:37
|
+(7) будет позиция последней точки
|
|||
9
Живой Ископаемый
25.08.11
✎
14:37
|
а так
Лев(ТС,СтрДлина(ТС)-Прав(ТС,Найти(ТС,".АВС"))); |
|||
10
Wobland
25.08.11
✎
14:40
|
(9) а что это скажет на .АВС.АВС?
|
|||
11
Живой Ископаемый
25.08.11
✎
14:41
|
скажет "".. разве нет?
|
|||
12
Wobland
25.08.11
✎
14:43
|
фигню какую-то скажет. у тебя СтрДлина()-Прав()
|
|||
13
OnCheck
25.08.11
✎
14:44
|
(0) имя файла что ли парсишь?
|
|||
14
Живой Ископаемый
25.08.11
✎
14:45
|
окей... ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(МояСтрока,".АВС")[0]
угу? |
|||
15
Wobland
25.08.11
✎
14:48
|
(14) договорились ;)
|
|||
16
TwoWorld
25.08.11
✎
14:50
|
2 цикла: первый правильно работает, второй вообще не правильно:
Для каждого ТС из СписокДоступныхВнешнихФорм Цикл ТСТЗ = Тз.Добавить(); ТСТЗ.Вид = Прав(ТС.Значение,Найти(ТС.Значение,".")); ТСТЗ.ПечФорма = Лев(ТС.Значение,СтрДлина(ТС.Значение)-Найти(ТС.Значение,".")-1); КонецЦикла; Для каждого ТСС из СписокФорм Цикл ТСТЗ = Тз.Добавить(); ТСТЗ.Вид = Прав(ТСС.Значение,Найти(ТСС.Значение,".")); ТСТЗ.ПечФорма = Лев(ТСС.Значение,СтрДлина(ТСС.Значение)-Найти(ТСС.Значение,".")-1); КонецЦикла; |
|||
17
Wobland
25.08.11
✎
14:54
|
(16) правильно работает тот, что в ОбщегоНазначения
|
|||
18
Живой Ископаемый
25.08.11
✎
14:56
|
||||
19
Wobland
25.08.11
✎
14:59
|
(18) третья строка!
|
|||
20
Wobland
25.08.11
✎
15:00
|
и всё-таки. не имя ли файла надо, а?
|
|||
21
TwoWorld
25.08.11
✎
15:07
|
(17) аналогично
Для каждого ТС из СписокДоступныхВнешнихФорм Цикл ТСТЗ = Тз.Добавить(); ТСТЗ.Вид = Прав(ТС.Значение,Найти(ТС.Значение,".")); ТСТЗ.ПечФорма =ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТС,ТСТЗ.Вид)[0]; КонецЦикла; Для каждого ТСС из СписокФорм Цикл ТСТЗ = Тз.Добавить(); ТСТЗ.Вид = Прав(ТСС.Значение,Найти(ТСС.Значение,".")); ТСТЗ.ПечФорма =ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТСС,ТСТЗ.Вид)[0]; КонецЦикла; Второй цикл не правильно работает |
|||
22
TwoWorld
25.08.11
✎
15:08
|
ТСТЗ.Вид = Прав(ТСС.Значение,Найти(ТСС.Значение,".")); - она неправильно работает, берет после точки еще
|
|||
23
Живой Ископаемый
25.08.11
✎
15:10
|
я думаю что у этой болезни есть точное латинское название
|
|||
24
TwoWorld
25.08.11
✎
15:12
|
(23) структура строки:
ПечатнаяФорма.Документ.Метаданные().Имя |
|||
25
TwoWorld
25.08.11
✎
15:13
|
(24)
Т.е Торг - 12.РеализацияТоваровУслуг |
|||
26
Живой Ископаемый
25.08.11
✎
15:13
|
(24) можно более развернутых два примера.. что имеем, что нужно получить?
|
|||
27
TwoWorld
25.08.11
✎
15:18
|
(26) первый цик правильно работает.
Второй цикл: пример: Расходная накладная.РеализацияТоваровУслуг ТСТЗ.Вид = Прав(ТСС.Значение,Найти(ТСС.Значение,".")); - выдает - ализацияТоваровУслуг |
|||
28
Wobland
25.08.11
✎
15:20
|
ТСТЗ.Вид чему равен?
|
|||
29
TwoWorld
25.08.11
✎
15:22
|
(28) все решил проблему)
|
|||
30
Живой Ископаемый
25.08.11
✎
15:24
|
рассказывай, где лажал и полоскал нам мозг...
|
|||
31
TwoWorld
25.08.11
✎
15:24
|
(29) неа, через раз работает
(28) ТСТЗ.Вид = ализацияТоваровУслуг |
|||
32
Wobland
25.08.11
✎
15:25
|
(31) и чего ты ожидаешь после такого разделителя?
|
|||
33
TwoWorld
25.08.11
✎
15:26
|
(32)РеализацияТоваровУслуг
|
|||
34
Живой Ископаемый
25.08.11
✎
15:26
|
(31) выплюнь жвачку изо рта и покажи две начальные строки и две конечные которые нужно получить
|
|||
35
TwoWorld
25.08.11
✎
15:27
|
Начальные: Торг - 12.РеализацияТоваровУслуг
Должно быть: а=Торг - 12; в=РеализацияТоваровУслуг; |
|||
36
Sersh
25.08.11
✎
15:28
|
(27) ТСТЗ.Вид = Сред(ТСС.Значение,Найти(ТСС.Значение,".")+1);
|
|||
37
Живой Ископаемый
25.08.11
✎
15:29
|
2(35) а=ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(" Торг - 12.РеализацияТоваровУслуг",".")[0];
в=ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(" Торг - 12.РеализацияТоваровУслуг",".")[1]; |
|||
38
Sersh
25.08.11
✎
15:30
|
ТСТЗ.ПечФорма = Лев(ТСС.Значение,Найти(ТСС.Значение)-1);
|
|||
39
TwoWorld
25.08.11
✎
15:30
|
(37) точки может быть несколько: например
Счет фактура(09,02,2011)_новая.СчетФактураВыданный |
|||
40
Sersh
25.08.11
✎
15:31
|
(38) ТСТЗ.ПечФорма = Лев(ТСС.Значение,Найти(ТСС.Значение,".")-1);
|
|||
41
Sersh
25.08.11
✎
15:31
|
(39) от же ш...
|
|||
42
Живой Ископаемый
25.08.11
✎
15:31
|
2(39) где здесь несколько точек?
|
|||
43
Wobland
25.08.11
✎
15:32
|
ну найди уже позицию последней точки
|
|||
44
TwoWorld
25.08.11
✎
15:32
|
(39)Счет фактура(09.02.2011)_новая.СчетФактураВыданный
и (38) и (40) не сработает |
|||
45
Wobland
25.08.11
✎
15:32
|
(42) допускается, имхо. вдруг попадётся
|
|||
46
Sersh
25.08.11
✎
15:35
|
Вид_разд = СтрЗаменить(ТСТЗ.Значение,".",Символы.ПС);
ТСТЗ.Вид = СтрПолучитьСтроку(Вид_разд,СтрЧислоСтрок(Вид_разд)); |
|||
47
Живой Ископаемый
25.08.11
✎
15:41
|
2(45) пусть приведет пример.
|
|||
48
TwoWorld
25.08.11
✎
15:43
|
(46) да, работает правильно,объясни плиз. эти строчки!
|
|||
49
Живой Ископаемый
25.08.11
✎
15:44
|
МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПосдтрок("Счет фактура(09.02.2011)_новая.СчетФактураВыданный",".");
ВидДокумента = МассивПодстрок[МассивПодстрок.Количество()] ; для остального - пройтись циклом и собратьзаново |
|||
50
TwoWorld
25.08.11
✎
15:45
|
(48) я поторопился, если одна точка то работает, если уже 2 попадается - то нет!
|
|||
51
Wobland
25.08.11
✎
15:45
|
||||
52
Sersh
25.08.11
✎
15:46
|
(48) Заменяешь в начальной строке точки на разделители строк, потом получаешь последнюю подстроку многострочного текста
|
|||
53
TwoWorld
25.08.11
✎
15:48
|
ок, дальше я сам!
|
|||
54
Sersh
25.08.11
✎
15:49
|
Вид_разд = СтрЗаменить(ТСТЗ.Значение,".",Символы.ПС);
Для й = 1 по СтрЧислоСтрок(Вид_разд)-1 Цикл ТСТЗ.ПечФорма = ТСТЗ.ПечФорма + "." + СтрПолучитьСтроку(Вид_разд,й); КонецЦикла; ТСТЗ.ПечФорма = Сред(ТСТЗ.ПечФорма,2); |
|||
55
TwoWorld
25.08.11
✎
15:58
|
(54) так тоже не сработает!
|
|||
56
TwoWorld
25.08.11
✎
15:59
|
(54) напиши такую строку:
Счет(02.03.01).12...РеализацияТоваровУслуг и посмотри что получится! |
|||
57
TwoWorld
25.08.11
✎
16:00
|
Нужно всего, найти первую точку слева и разбит!
|
|||
58
Wobland
25.08.11
✎
16:06
|
(57) справа. или слева? я не понял, вариант со СтрЗаменить на Символы.ПС чем не взлетел?
|
|||
59
TwoWorld
25.08.11
✎
16:07
|
(58)справа
|
|||
60
Живой Ископаемый
25.08.11
✎
16:08
|
2(59) Справа от первой точки или последней?
|
|||
61
Sersh
25.08.11
✎
16:08
|
почему (54) не сработает?
|
|||
62
TwoWorld
25.08.11
✎
16:08
|
ТСТЗ = Тз.Добавить();
Вид_разд = СтрЗаменить(ТС.Значение,".",Символы.ПС); Для й = 1 по СтрЧислоСтрок(Вид_разд)-1 Цикл ТСТЗ.ПечФорма = ТСТЗ.ПечФорма + "." + СтрПолучитьСтроку(Вид_разд,й); // (ТСТЗ.ПечФорма - если первая строка - то неопределено вылезет) КонецЦикла; ТСТЗ.ПечФорма = Сред(ТСТЗ.ПечФорма,2); |
|||
63
TwoWorld
25.08.11
✎
16:09
|
(60) справа от первой точки это А, перед первой точкой это В
|
|||
64
Sersh
25.08.11
✎
16:10
|
(62) ну и поставь перед циклом ТСТЗ.печФорма = "";
|
|||
65
Wobland
25.08.11
✎
16:13
|
блин, ни фига ветку раздули из-за копеечного вопроса
|
|||
66
Живой Ископаемый
25.08.11
✎
16:14
|
2(63) что это за буквы вообще?
в строке Счет фактура(09.02.2011)_новая.СчетФактураВыданный слоева от первой точки - 9, справ - 0. слева от последней - я, справа - С |
|||
67
TwoWorld
25.08.11
✎
16:17
|
Ветка закрыта!
|
|||
68
Живой Ископаемый
25.08.11
✎
16:18
|
либо даже так...
слева от первой точки "Счет фактура(09", справа "02.2011)_новая.СчетФактураВыданный " слева от "Счет фактура(09.02.2011)_новая", справа - "СчетФактураВыданный" что нужно получить? ==== (67) вот видишь, даже заклинания не срабатывают из-за жвачки... |
|||
69
TwoWorld
25.08.11
✎
16:23
|
(68)
слева от "Счет фактура(09.02.2011)_новая", справа - "СчетФактураВыданный" |
|||
70
TwoWorld
25.08.11
✎
16:26
|
Вот готовый код:
Для каждого ТС из СписокДоступныхВнешнихФорм Цикл ТСТЗ = Тз.Добавить(); ТСТЗ.ПечФорма = ""; Вид_разд = СтрЗаменить(ТС.Значение,".",Символы.ПС); Для й = 1 по СтрЧислоСтрок(Вид_разд)-1 Цикл ТСТЗ.ПечФорма = ТСТЗ.ПечФорма + "." + Строка(СтрПолучитьСтроку(Вид_разд,й)); КонецЦикла; ТСТЗ.ПечФорма = Сред(ТСТЗ.ПечФорма,2); ТСТЗ.Вид =ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТС,ТСТЗ.ПечФорма+".")[1]; КонецЦикла; Для каждого ТСС из СписокФорм Цикл ТСТЗ = Тз.Добавить(); ТСТЗ.ПечФорма = ""; Вид_разд = СтрЗаменить(ТСС.Значение,".",Символы.ПС); Для й = 1 по СтрЧислоСтрок(Вид_разд)-1 Цикл ТСТЗ.ПечФорма = ТСТЗ.ПечФорма + "." + Строка(СтрПолучитьСтроку(Вид_разд,й)); КонецЦикла; ТСТЗ.ПечФорма = Сред(ТСТЗ.ПечФорма,2); ТСТЗ.Вид =ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТСС,ТСТЗ.ПечФорма+".")[1]; КонецЦикла; |
|||
71
Wobland
25.08.11
✎
16:28
|
Строка(СтрПолучитьСтроку - Строка() зря
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |