Имя: Пароль:
1C
1С v8
как получить из строки только 35 символов?
,
0 ddd2005
 
10.06.14
21:42
как получить из строки только 35 символов?
1 MadHead
 
10.06.14
21:44
Запросом к таблице значений, лучше всего
2 Steel_Wheel
 
10.06.14
21:44
Лев(Стр, 35)?
3 MadHead
 
10.06.14
21:46
(2) откуда взялась цифра 35?
4 wPa
 
10.06.14
21:47
LTRIM ?
5 ddd2005
 
10.06.14
21:47
(2) спасибо совсем забыл про эту фукцию
6 ddd2005
 
10.06.14
21:47
(4) такого не знал разъясни
7 фобка
 
10.06.14
21:48
(6) англ синтаксис
8 Steel_Wheel
 
10.06.14
21:49
(3) Из условия задачи, наверное.
(5) пожалуйста

(4) ltrim разве не отрежет пробелы слева? Как СокрЛ()?
9 wPa
 
10.06.14
21:49
(6) школьный курс. не бери в голову
10 фобка
 
10.06.14
21:51
Но ответ неверный кстати)
Лев(стр,35)+лев(Тут35пробелов, 35-длинастр(лев(стр,35)))
11 ddd2005
 
10.06.14
21:58
к меня сейчас в комментарии
№ заказа: 1 747 352 от 10.06.2014 11:15:00; дата доставки 14.06.2014 0:00:00; код магазина 178; ответственное лицо Иванова Е.И.; факс (8111)511495; телефон (8111)511119; Адрес доставки г.Вологда, Окружное шоссе, д. 42

мне нужно получить
№ заказа: 1 747 352 от 10.06.2014
12 ddd2005
 
10.06.14
21:59
разве (2) не подойдет?
13 ДенисЧ
 
10.06.14
21:59
(11) А если номер заказа будет № заказа: 1 352 от 10.06.2014 ?
14 kokamoonga
 
10.06.14
22:05
(13) очевидно же, тогда будет ветка "как получить из строки только 29 символов?"
15 EvgeniuXP
 
10.06.14
22:06
(12) СтрЗаменить(НомерЗакаказа, Символы.ПС) и возьми все строки кроме последней.
16 EvgeniuXP
 
10.06.14
22:09
(+15) Многострочка = СтрЗаменить(НомерЗаказа, " ", Символы.ПС);

ВсегоСтрокКромеПоследней = СтрЧислоВхождений(Многострочка) - 1;

Для НС = 1 По ВсегоСтрокКромеПоследней Цикл

НомерЗаказа = СокрЛП(НомерЗаказа + " " + СтрПолучитьСтрокуПоНомеру(НС));

КонецЦикла

типо так.
17 EvgeniuXP
 
10.06.14
22:10
то что в цикле НомерЗаказа - инициализировать перед циклом как пустую, или ваще другую переменную использовать
18 BOZKURT
 
10.06.14
22:10
(0) v8: v8: Подскажите функцию разбивки строки

// Функция "расщепляет" строку на подстроки, используя заданный
//        разделитель. Разделитель может иметь любую длину.
//        Если в качестве разделителя задан пробел, рядом стоящие пробелы
//        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//        игнорируются.
//        Например,
//        РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов,
//        три из которых - пустые строки, а
//        РазложитьСтрокуВМассивПодстрок(" ку   му", " ") возвратит массив значений из двух элементов
//
//    Параметры:
//        Стр -             строка, которую необходимо разложить на подстроки.
//                        Параметр передается по значению.
//        Разделитель -     строка-разделитель, по умолчанию - запятая.
//
//
//    Возвращаемое значение:
//        массив значений, элементы которого - подстроки
//
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
    
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока Истина Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока Истина Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
    
КонецФункции // РазложитьСтрокуВМассивПодстрок

// Использование

ИсходныйТекст = "№ заказа: 1 747 352 от 10.06.2014 11:15:00; дата доставки 14.06.2014 0:00:00; код магазина 178; ответственное лицо Иванова Е.И.; факс (8111)511495; телефон (8111)511119; Адрес доставки г.Вологда, Окружное шоссе, д. 42";
НомерЗаказаИДата = РазложитьСтрокуВМассивПодстрок(ИсходныйТекст, ";");
19 EvgeniuXP
 
10.06.14
22:12
(18) типовые - громоздкие и много лишнего в них.
20 BOZKURT
 
10.06.14
22:14
(19) главное суть, а переделать на "как надо", конечно можно
21 Steel_Wheel
 
10.06.14
22:16
(12) Не подойдет. Тебе надо узнать
а) точку с какой начать брать (СтрНайти() )
б) точку, где остановиться (СтрНайти() )
в) использовать Средн()
22 Steel_Wheel
 
10.06.14
22:17
А еще правильнее, взять из объекта номер заказа и дату и собрать ту строку, которая нужна
23 KUBIK
 
10.06.14
22:19
(11) Надо пропарсить положение первой ";", а потом применить правильно Лев за вычетом 8 знаков (время)
24 EvgeniuXP
 
10.06.14
22:21
(23) еще правильней, язык выражений использовать.
25 Steel_Wheel
 
10.06.14
22:23
(24) если в 1с регулярки завезли, то согласен.
26 Coldboy
 
10.06.14
22:29
а в чем проблема идти по шаблону до слова "дата поставки"? и до нее все брать?
27 PR
 
11.06.14
09:30
(5) ДЕВЯТЬ лет стажа. У меня просто нет слов.
28 Fragster
 
гуру
11.06.14
09:32
(27) человек при таком стаже уже знает того, кто знает где посмотреть
29 Fragster
 
гуру
11.06.14
09:32
(28)+ скоро уже будет знать того, кто знает, кто сделает...