Помощь - Поиск - Пользователи - Календарь
Полная версия: Функции работы со строками! Помогите разобраться...
"1C-PRO" - форум по 1C > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Greck
Доброго времени суток всем cool.gif Вобщем столкнулся с тем, что набор функций работы со строками специфический немного в 1С 8.0. Если ближе к делу, то у меня есть строка формата:

Код
Company;8249;03.09.2007-12:00:10;17;0.1139;4020


Необходимо написать функцию, входными параметрами которой будут: "строка", "номер поля".
Результатом возврата которой было бы значение поля под переданынм номером.

У меня сходу не получилось это реализовать. Свой код пока не хочу сюда постить чтобы не задать им ход мысли - хочу послушать ваши предложения, может оно намного проще реализуется, чем я задумал...

Всем спасибо за внимание и ответы clap1.gif
Эмин
Как вариант, может не понравится, но ничего такой:
Код

ТД = Новый ТекстовыйДокумент;
ТД.УстановитьТекст(СтрЗаменить(ВАШАСТРОКА, ";", Символы.ПС));


Вы получите Текстовый документ, каждое значение на новой строке - как получать строки - по хелпу разберетесь :) По номеру строки будете получать и номер поля и значение его.

То есть ваш пример станет:
Код

Company
8249
03.09.2007-12:00:10
17
0.1139
4020
Prospero
А если просто:
Код
РазделеннаяСтрока = СтрЗаменить(СтрокаПараметр, ";", Символы.ПС);
Результат = СтрПолучитьСтроку(РазделеннаяСтрока,НомерПоляПараметр);

?
Эмин
Prospero, Совершенно верно, я просто не знаю для чего использовать будут :))) Да и голова после отпуска еще не до конца фокусирует мысли - нам такие задачи приходилось на файлах решать, вот я и предложил, а как-то так напрямую уже и не помню, может и делили, а потом в список значений загоняли...
BabySG
А я бы сделал так:
Код

ВременнаяСтрока = СокрЛП(РазбираемаяСтрока)

Для НомерСтроки = 1 по СтрЧислоСтрок(ВременнаяСтрока)
   СтрокаПараметра = СтрПолучитьСтроку(ВременнаяСтрока, НомерСтроки);
КонецЦикла;


Соответственно, СтрокаПараметра - искомые значения

АПДЕЙТ: Не сочтите тормозом, просто начал писать и отвлёкся :)
Greck
Я сделал в тупую посимвольным перебором строки и формированием массива со значениями полей разделенных ";"...


Код
Функция ВычислитьИзСтроки(СтрокаВыписки);
i=0;

стртемп = "";
ВсеПоля = Новый Массив;

Для i=1 по СтрДлина(СтрокаВыписки) Цикл
    
     Если Сред(СтрокаВыписки,i,1)<>";" Тогда
      стртемп = стртемп + Сред(СтрокаВыписки,i,1);
       Иначе
         ВсеПоля.Добавить(стртемп);
         стртемп = "";
       КонецЕсли;
КонецЦикла;

Возврат(ВсеПоля);
        
КонецФункции


BabySG
При большом объеме разбора данных - конкатенация строк будет тормозить не по-детски...
Эмин
Посимвольный перебор гораздо медленнее встроенных функций (Типа СтрЗаменить)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2008 Invision Power Services, Inc.