Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с текстовым файлом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Vofka
Есть текстовый файл. В нем строки типа:

ячтситьи;чиыриори;ыапрпарпа;

Как мне разделить эту строку так:
Перем1 = ячтситьи;
Перем2 = чиыриори;
перем3 = ыапрпарпа;

?
zetovich
эх...совсем народ разленился...
и прада не умееете работать со строками?
нет говтов...мсамому функцию написать 5-10 строчек
zetovich
Функция Разпарсить(Стр)
Разделитель = ";";

ТЗ = СоздатьОбъект("ТаблицаЗначний");
ТЗ.НоваяКОлонка("СуперСтрока", );
Стр = СокрЛП(Стр)
Пока Найти(Стр, Разделитель) Цикл
гы = Лев(Стр,Найти(Стр, Разделитель) - 1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, Разделитель));
ТЗ.НоваяСтрока();
ТЗ.СуперСтрока = гы;
КонецЦикла
возврат ТЗ;
КонецФункции
--------------
з.ы. писал тут в окне...может и ругнется wink.gif
возвращает Таблицу с строками разделенными раздилителем (wink.gif
Vofka
Просто зачем изобретать велосипед, если для этого есть специальная функция

Ладно, тогда вопрос такой:
как поризвести поиск в строке до определённого символа?
zetovich
Цитата(Vofka @ 03.08.09, 15:05) необходимо зарегистрироваться для просмотра ссылки
Просто зачем изобретать велосипед, если для этого есть специальная функция

Ладно, тогда вопрос такой:
как поризвести поиск в строке до определённого символа?

нема такой функции...так что можете смело изобретать велосипед!
з.ы. в качестве парметра в функцию можно передать и строку разделитель....будет ваще парсить на ура smile.gif
хакерок
Цитата(Vofka @ 03.08.09, 15:05) необходимо зарегистрироваться для просмотра ссылки
Просто зачем изобретать велосипед, если для этого есть специальная функция

Ладно, тогда вопрос такой:
как поризвести поиск в строке до определённого символа?


Вот тебе примерчик как из

ячтситьи;чиыриори;ыапрпарпа;";

получить ячтситьи

Стр = "ячтситьи;чиыриори;ыапрпарпа;";
СимволРазделения =";"
КусокСтрокиДоСимвола = ""; С = 1; Дл =СтрДлина(Стр);
Пока Сред(Стр,С,1) <> СимволРазделения Цикл
КусокСтрокиДоСимвола = КусокСтрокиДоСимвола + Сред(Стр,С,1);
С = С+1;
КонецЦикла;
Batchir
А зачем по "букавкам" перебирать строку?
ИМХО, zetovich достаточно точно описал разбитие строки с помощью функции Найти
MATEVI
Т = СоздатьОбъект("Текст");
Сп = СоздатьОбъект("СписокЗначений");
Т.Открыть(ИмяФайла);
Для Сч=1 По Т.КоличествоСтрок() Цикл
Стр = Т.ПолучитьСтроку(Сч);
Сп.УдалитьВсе();
Сп.ИзСтрокиСРазделителями(Стр);
Если Сп.РазмерСписка() <= 0 Тогда
Продолжить;
КонецЕсли;
НомерПП = Сред(Сп.ПолучитьЗначение(1),13);
КонецЦикла
хакерок
Может я не прав но текстовый файл можно использовать для обмена данных между программами 1С и внешними

например файл типа

Строка1+СимволТабуляции+Строка2+СимволТабуляции+Строка3

отлично открывается любой версией мийкрософт екселя для дополнительнях вычислений или отчётов.

кроме того он прекрасно вноситься в другие базы данных Access , MS SQL ...

С функция ВСтрокуСРазделителями() не разгонишься.

Ктото делал связь такого файла с MS Access?
Vofka
Цитата
Может я не прав но текстовый файл можно использовать для обмена данных между программами 1С и внешними


Ну а зачем же ещё?

Цитата
как поризвести поиск в строке до определённого символа?


Вообще мозг вчер не работал. Найти() рулит

Всем спасибо, сделал что хотел. Для моего случая это выглядит так:



Процедура РазделитьСтроку(Строчка, Разделитель)

ЕДРПОУ = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

МФОА = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

РСчетА = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

Валюта = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

ДатаОперации = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

КодОперации = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

МФОБ = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

НазваниеБанка = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

СчетКорр = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

ЕДРПОУКорр = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

Корр = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

НомерДок = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

ДатаДокумента = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

Дебет = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

Кредит = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

ПризначенняПлатежу = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

ГривневеПокриття = Лев(Строчка, Найти(Строчка, Разделитель)-1);
Строчка = Прав(Строчка, СтрДлина(Строчка) - Найти(Строчка, Разделитель));

КонецПроцедуры


К стати, почему никто не пользуется тегами для вставки кода?
MATEVI
Цитата(хакерок @ 04.08.09, 10:58) необходимо зарегистрироваться для просмотра ссылки
....С функция ВСтрокуСРазделителями() не разгонишься. ...

Ну вопрос задавался о том как разбить строку на части.

ЗЫ C Access работать не доводилось только с Excel
MATEVI
Цитата(Vofka @ 04.08.09, 13:17) необходимо зарегистрироваться для просмотра ссылки
Ну а зачем же ещё?
Вообще мозг вчер не работал. Найти() рулит
Всем спасибо, сделал что хотел. Для моего случая это выглядит так:


Все таки посмотрел бы Сп.ИзСтрокиСРазделителями() и код был бы поменьше.
Vofka
Цитата
Все таки посмотрел бы Сп.ИзСтрокиСРазделителями() и код был бы поменьше.


Посмотрю smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.