|
Разбивка ТХТ файла на колонки для последующей записи в Регистр. | ☑ | ||
---|---|---|---|---|
0
FFIL0S0FF
27.03.18
✎
11:11
|
Добрый день.
Проблема такая. У меня есть текстовый файл с данными в стиле: Викторовна 0678 Группа экономического планирования, бюджетирования и анализа Ведущий экономист (это всё одна строка). Проблема в выборе табуляции для разбивки на колонки. Если ставлю табуляцию " " то наименование отделов разбивает на отдельные колонки. Если поставить табуляцию " " то появляется много левых колонок с пустыми значениями "". Что в этом случае можно сделать? Перевести ТХТ формат в EXCEL и не парится не предлагать.(боюсь в моем случае это не подходит) |
|||
1
Lexey_
27.03.18
✎
11:13
|
(0) исключать пустые
|
|||
2
Остап Сулейманович
27.03.18
✎
11:14
|
(0) Скорее всего поля записей имеют фиксированный размер. Просто брать значение начиная с определенного символа заданной длинны.
|
|||
3
Остап Сулейманович
27.03.18
✎
11:15
|
+ (2) Нужно глянуть несколько строк.
|
|||
4
Chameleon1980
27.03.18
✎
11:16
|
за разделитель берите 2 и более пробелов.
|
|||
5
Chameleon1980
27.03.18
✎
11:16
|
или там реальные табуляции?
сам бы файл посмотреть |
|||
6
Йохохо
27.03.18
✎
11:18
|
судя по тому что это жесткий корпоратив и табуляция по дефолту часто 5 пробелов второе и четвертое поле отфильтровали в выводе
|
|||
7
VladZ
27.03.18
✎
11:20
|
(0) Можно запросить исходную информацию с нормальным разделителем? Пусть сделают через ";".
|
|||
8
Ц_У
27.03.18
✎
11:21
|
Глобальный контекст (Global context)
СтрРазделить (StrSplit) Синтаксис: СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>) Параметры: <Строка> (обязательный) Тип: Строка. Разделяемая строка. <Разделитель> (обязательный) Тип: Строка. Строка символов, каждый из которых является индивидуальным разделителем. <ВключатьПустые> (необязательный) Тип: Булево. Указывает необходимость включать в результат пустые строки, которые могут образоваться в результате разделения исходной строки. Значение по умолчанию: Истина. Возвращаемое значение: Тип: Массив. Массив со строками, которые получились в результате разделения исходной строки. |
|||
9
RomanYS
27.03.18
✎
11:21
|
Сколько телепатов)
(0) Договориться с поставщиком файла о формате, иначе разбирать глазами и руками. |
|||
10
Ц_У
27.03.18
✎
11:21
|
Поделит и сама пустые удалит
|
|||
11
FFIL0S0FF
27.03.18
✎
11:35
|
Ок
Спасибо, попробую |
|||
12
Chameleon1980
27.03.18
✎
11:40
|
(10)
пля - тут вопрос в разделителе |
|||
13
Ц_У
27.03.18
✎
11:41
|
(12) два пробела - за глаза
|
|||
14
George Wheels
27.03.18
✎
12:03
|
(13) Очень многие пользователи после слова сразу нажимают пробел и перед вводом следующего опять нажимают пробел. Получается: "Наименование отдела" - это будет две колонки.
|
|||
15
Chameleon1980
27.03.18
✎
13:22
|
(13) см. (4)
+ о (8) я думал и так все в курсе. + не очень сложно (если платформа не позволяет - бывает) несложно использовать из общих модулей функционал (зачастую есть такое) или нарисовать (содрать гденить) самому. |
|||
16
FFIL0S0FF
27.03.18
✎
13:24
|
Вообщем сделал вот так:
ТекстовыйДок = Новый ТекстовыйДокумент(); ТекстовыйДок.Прочитать(ПутьКФайлу); КоличествоСтрок = ТекстовыйДок.КоличествоСтрок(); Для Сч=4 по КоличествоСтрок Цикл СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч); МассивЗначений = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла," "); МасНовЭл = Новый Массив; Для Каждого эл из МассивЗначений Цикл Если эл <> "" Тогда ИндексМас = МассивЗначений.Найти(эл); МасНовЭл.Добавить(эл); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
17
Ц_У
27.03.18
✎
13:25
|
(16) встроенная из (8) быстрее
|
|||
18
FFIL0S0FF
27.03.18
✎
13:26
|
Создал 2 массив в который записал не пустые значения.
Вроде как отрабатывает нормально. Всем кто предлогал идеи спасибо. Тему считаю закрытой. Если конечно не найдете более простой вариант. |
|||
19
Ц_У
27.03.18
✎
13:28
|
(18) не читаешь, третий параметр ЛОЖЬ удалит пустые :)
|
|||
20
FFIL0S0FF
27.03.18
✎
13:56
|
(19) Вообщем да...
Прошу прощения. Я сначала и не понял... Я в начале попадал на функцию ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла," ");она была с 2 переменными. а надо было СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла," ", Истина); |
|||
21
FFIL0S0FF
27.03.18
✎
13:57
|
Итоговый код :
ТекстовыйДок = Новый ТекстовыйДокумент(); ТекстовыйДок.Прочитать(ПутьКФайлу); КоличествоСтрок = ТекстовыйДок.КоличествоСтрок(); Для Сч=4 по КоличествоСтрок Цикл СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч); МассивЗначений =СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла," ", Истина); КонецЦикла; КонецЦикла; |
|||
22
FFIL0S0FF
27.03.18
✎
13:58
|
3 параметр "Пропускать путсые строки" значение Истина
|
|||
23
Chameleon1980
27.03.18
✎
14:26
|
(19)
еще раз - неизвестно про платформу, вроде. Если что СтрРазделить не сразу появилась |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |