Имя: Пароль:
1C
1С v8
Получение подстроки!
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
Строка(СтрПолучитьСтроку - Строка() зря