Имя: Пароль:
1C
1С v8
Аналог ИзСтрокиСРазделителями() в 1св8
0 vladko
 
22.09.11
10:42
Переделываю обработку загрузки из текстового файла, который был сделан для 7.7. Не могу найти Аналог .ИзСтрокиСРазделителями() для перевода строки табличного документа в список значений.
В 7.7. было:
Для н = 1 По ТХТ.КоличествоСтрок() Цикл
Стр = ТХТ.ПолучитьСтроку(н);
СЗ.ИзСтрокиСРазделителями(Стр);
//ну и далее Код = СЗ.ПолучитьЗначение(1) и т.д.
КонецЦикла;
1 vladko
 
22.09.11
10:49
пока придумал корявое решение через массив
Масс = Новый Массив;
Масс.Очистить();
Для н = 1 по ТХТ.КоличествоСтрок() Цикл
       Стр = СтрЗаменить(ТХТ.ПолучитьСтроку(н),"""","");
       Пока Найти(Стр,",") Цикл
           Поз = Найти(Стр,",");
           Масс.Добавить(Лев(Стр,Поз-1));
           Стр = Прав(Стр, СтрДлина(Стр)-Поз);
       КонецЦикла;
       Масс.Добавить(Лев(Стр,Поз-1));
       
       Код = Масс.Получить(0);
2 butterbean
 
22.09.11
10:50
СтрЗаменить(ТХТ.ПолучитьСтроку(н),",",Символы.ПС) и потом выбирай из многострочной строки
3 jsmith82
 
22.09.11
10:51
Функция ПолучитьМассивСтрок(String, Separator) Экспорт
   
   ArrayRow = New Array();
   
   Lit = "";
   
   For i = 1 To StrLen(String) Do
       
       Character = Mid(String, i, 1);
       
       If Character = Separator Then
           ArrayRow.Add(Lit);
           Lit = "";
       Else
           Lit = Lit + Character;
       EndIf;
   EndDo;
   ArrayRow.Add(Lit);
   
   Return ArrayRow;

КонецФункции
4 Gesperid10
 
22.09.11
10:53

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



(C) 1С
5 Maxus43
 
22.09.11
10:55
v8: Покритикуйте код

тама есть код в одну строку чтоб разложить в массив строку :)
6 vladko
 
22.09.11
10:58
спасибо всем.
В 7.7. было 3 строки, в 8.х куча
7 Maxus43
 
22.09.11
10:59
(6) в 8-ке одна строка. кури (5)