Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Работа с текстовым файлом          
Vofka Подменю пользователя
сообщение 03.08.09, 12:44
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13988
Из: Киев
Спасибо сказали: 4562 раз
Рейтинг: 3690.8

Есть текстовый файл. В нем строки типа:

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

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

?

zetovich Подменю пользователя
сообщение 03.08.09, 12:56
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

эх...совсем народ разленился...
и прада не умееете работать со строками?
нет говтов...мсамому функцию написать 5-10 строчек

zetovich Подменю пользователя
сообщение 03.08.09, 13:05
Сообщение #3

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

Функция Разпарсить(Стр)
Разделитель = ";";

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

Спасибо сказали: Vofka,

Vofka Подменю пользователя
сообщение 03.08.09, 13:05
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13988
Из: Киев
Спасибо сказали: 4562 раз
Рейтинг: 3690.8

Просто зачем изобретать велосипед, если для этого есть специальная функция

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

zetovich Подменю пользователя
сообщение 03.08.09, 13:08
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

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

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

нема такой функции...так что можете смело изобретать велосипед!
з.ы. в качестве парметра в функцию можно передать и строку разделитель....будет ваще парсить на ура smile.gif

хакерок Подменю пользователя
сообщение 03.08.09, 14:42
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 258
Из: Київ
Спасибо сказали: 12 раз
Рейтинг: 0

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

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


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

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

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

Стр = "ячтситьи;чиыриори;ыапрпарпа;";
СимволРазделения =";"
КусокСтрокиДоСимвола = ""; С = 1; Дл =СтрДлина(Стр);
Пока Сред(Стр,С,1) <> СимволРазделения Цикл
КусокСтрокиДоСимвола = КусокСтрокиДоСимвола + Сред(Стр,С,1);
С = С+1;
КонецЦикла;

Спасибо сказали: Pepe,

Batchir Подменю пользователя
сообщение 03.08.09, 16:30
Сообщение #7

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1435 раз
Рейтинг: 0

А зачем по "букавкам" перебирать строку?
ИМХО, zetovich достаточно точно описал разбитие строки с помощью функции Найти

MATEVI Подменю пользователя
сообщение 03.08.09, 18:54
Сообщение #8

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 960 раз
Рейтинг: 0

Т = СоздатьОбъект("Текст");
Сп = СоздатьОбъект("СписокЗначений");
Т.Открыть(ИмяФайла);
Для Сч=1 По Т.КоличествоСтрок() Цикл
Стр = Т.ПолучитьСтроку(Сч);
Сп.УдалитьВсе();
Сп.ИзСтрокиСРазделителями(Стр);
Если Сп.РазмерСписка() <= 0 Тогда
Продолжить;
КонецЕсли;
НомерПП = Сред(Сп.ПолучитьЗначение(1),13);
КонецЦикла

хакерок Подменю пользователя
сообщение 04.08.09, 8:58
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 258
Из: Київ
Спасибо сказали: 12 раз
Рейтинг: 0

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

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

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

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

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

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

Ктото делал связь такого файла с MS Access?

Vofka Подменю пользователя
сообщение 04.08.09, 11:17
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13988
Из: Киев
Спасибо сказали: 4562 раз
Рейтинг: 3690.8

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


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

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


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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


К стати, почему никто не пользуется тегами для вставки кода?

MATEVI Подменю пользователя
сообщение 04.08.09, 11:18
Сообщение #11

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 960 раз
Рейтинг: 0

Цитата(хакерок @ 04.08.09, 10:58) *
....С функция ВСтрокуСРазделителями() не разгонишься. ...

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

ЗЫ C Access работать не доводилось только с Excel

MATEVI Подменю пользователя
сообщение 04.08.09, 11:27
Сообщение #12

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 960 раз
Рейтинг: 0

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


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

Vofka Подменю пользователя
сообщение 04.08.09, 11:38
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13988
Из: Киев
Спасибо сказали: 4562 раз
Рейтинг: 3690.8

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


Посмотрю smile.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.11.24, 2:35
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!