Имя: Пароль:
1C
1С v8
Разбивка ТХТ файла на колонки для последующей записи в Регистр.
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)
еще раз - неизвестно про платформу, вроде.

Если что СтрРазделить
не сразу появилась