Имя: Пароль:
1C
1С v8
Работа со строками 8,2 .
0 KonstantinK90
 
21.05.15
12:59
Всем привет! Не знаю как сделать подскажите есть сотни документов с разными комментариями, т.е разное количество символов.К примеру: "Птичкин выгружено из Далион №А0007637 выгружено из УАТ №А0000008256" или "выгружено из Далион №А0007637 выгружено из УАТ №А0000008256" Или "Далион №А0007637 выгружено из УАТ №А0000008256". Как сделать так что бы 1с-ка после слова "далион" брала только номер до следующего пробела на пример №А0007637 пробел ...
1 ДенисЧ
 
21.05.15
13:00
В типовых конфах есть процедура РазбитьСтрокуНаМассивПодстрок() или что-то подобное.
2 KonstantinK90
 
21.05.15
13:00
рассмотрим первый пример "Птичкин выгружено из Далион №А0007637 выгружено из УАТ №А0000008256" от сюда нужно получить только номер после слова Далион "№А0007637"
3 zak555
 
21.05.15
13:01
конфа БП ?
4 KonstantinK90
 
21.05.15
13:01
Да БП
5 dangerouscoder
 
21.05.15
13:04
(4) коменты руками пишут?
6 KonstantinK90
 
21.05.15
13:06
да пишут мне конкретно нужен тот комментарий в котором есть слово Далион и номер который идет после
7 фобка
 
21.05.15
13:08
Синтакс-помощник, открой раздел работа со строкой
8 Ёпрст
 
21.05.15
13:09
(2) Либо разбиваешь строку в массив, разделительем будет пробел и дальше перебор, либо тупо через Найти,Сред,Лев,Прав,СтрДлина
9 dangerouscoder
 
21.05.15
13:10
в запросе используешь условие Комментарий ПОДОБНО "%Далион%"
потом перебором пилишь строку
10 KonstantinK90
 
21.05.15
13:11
нет не использую а какую возможность это дает ПОДОБНО "%Далион%" ?
11 zak555
 
21.05.15
13:13
обмен двух сторонний
через планы обмена сделан ?

комменты нужны для проверки ?
12 Garykom
 
гуру
21.05.15
13:14
Результат = "";
    лСтрока = "Птичкин выгружено из Далион №А0007637 выгружено из УАТ №А0000008256";
    мСтрока = СтрЗаменить(лСтрока, " ", Символы.ПС);
    КоличествоСтрок = СтрЧислоСтрок(мСтрока);
    Для НомерСтроки = 1 По КоличествоСтрок Цикл
        ТекСтрока = СтрПолучитьСтроку(мСтрока, НомерСтроки);
        Если СокрЛП(ТекСтрока)="Далион" Тогда
            Результат = СтрПолучитьСтроку(мСтрока, НомерСтроки+1);
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Сообщить(Результат);
13 Garykom
 
гуру
21.05.15
13:14
(12)+ затратил 2 минуты... с тебя (500/60)*2 рублей
14 dangerouscoder
 
21.05.15
13:15
(10) скорее всего вывалится в ошибку реквезит не отраниченной длинны
15 KonstantinK90
 
21.05.15
13:16
нет обмен одна сторонний просто документы проходят через 2 базы и в 3 заливаем а коменты нужны для проверки
16 KonstantinK90
 
21.05.15
13:23
о спасибо за помощь процедура вообще огонь!
17 ViSo76
 
21.05.15
13:26
Функция Split( ПереданнаяСтрока, Разделитель ) Экспорт

    СтрокаДанных = ПереданнаяСтрока;
    ЧислоВхождений = СтрЧислоВхождений( СтрокаДанных, Разделитель );
    СтрокаДанных = СтрЗаменить( СтрокаДанных, Разделитель, """},{""S"",""" );
    СтрокаДанных = "{""#"",51e7a0d2-530b-11d4-b98a-008048da3034,{" + СтрЗаменить( ЧислоВхождений + 1, Символы.НПП, "" ) + ",{""S"",""" + СтрокаДанных + """}}}";
    
    Возврат ЗначениеИзСтрокиВнутр( СтрокаДанных );
    
КонецФункции

лСтрока = "Птичкин выгружено из Далион №А0007637 выгружено из УАТ №А0000008256";

пНомер = Split( лСтрока, "алион №" )[1];
пНомер = Лев( пНомер, Найти( пНомер, " " ) - 1 );

Сообщить( пНомер );
18 ViSo76
 
21.05.15
13:37
Чтобы работала на всех данных

пНомер = Split( лСтрока, "алион №" );
пРезультат = ?( ЗначениеЗаполнено( пНомер ), "№" + Лев( пНомер[1], Найти( пНомер, " " ) - 1 ), "" );
Сообщить( пРезультат );
19 ViSo76
 
21.05.15
13:38
Чуть ошибся

пНомер = Split( лСтрока, "алион №" );
пРезультат = ?( ЗначениеЗаполнено( пНомер ), "№" + Лев( пНомер[1], Найти( пНомер[1], " " ) - 1 ), "" );
Сообщить( пРезультат );
20 KonstantinK90
 
21.05.15
13:39
все спасибо разберемся!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан