Вход | Регистрация


1С:Предприятие ::

Метки: 

Разбивка ТХТ файла на колонки для последующей записи в Регистр.

Я
   FFIL0S0FF
 
27.03.18 - 11:11
Добрый день.
Проблема такая.
У меня есть текстовый файл с данными в стиле:


Викторовна          0678          Группа экономического планирования, бюджетирования и анализа    Ведущий экономист  (это всё одна строка).


Проблема в выборе табуляции для разбивки на колонки. Если ставлю табуляцию " " то наименование отделов разбивает на отдельные колонки.

Если поставить табуляцию "    " то появляется много левых колонок с пустыми значениями "".



Что в этом случае можно сделать?
Перевести ТХТ формат в EXCEL  и не парится не предлагать.(боюсь в моем случае это не подходит)
 
  Рекламное место пустует
   Lexey_
 
1 - 27.03.18 - 11:13
(0) исключать пустые
   Остап Сулейманович
 
2 - 27.03.18 - 11:14
(0) Скорее всего поля записей имеют фиксированный размер. Просто брать значение начиная с определенного символа заданной длинны.
   Остап Сулейманович
 
3 - 27.03.18 - 11:15
+ (2) Нужно глянуть несколько строк.
   Chameleon1980
 
4 - 27.03.18 - 11:16
за разделитель берите 2 и более пробелов.
   Chameleon1980
 
5 - 27.03.18 - 11:16
или там реальные табуляции?
сам бы файл посмотреть
   Йохохо
 
6 - 27.03.18 - 11:18
судя по тому что это жесткий корпоратив и табуляция по дефолту часто 5 пробелов второе и четвертое поле отфильтровали в выводе
   VladZ
 
7 - 27.03.18 - 11:20
(0) Можно запросить исходную информацию с нормальным разделителем? Пусть сделают через ";".
   Ц_У
 
8 - 27.03.18 - 11:21
Глобальный контекст (Global context)
СтрРазделить (StrSplit)
Синтаксис:

СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)
Параметры:

<Строка> (обязательный)

Тип: Строка.
Разделяемая строка. 
<Разделитель> (обязательный)

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

Тип: Булево.
Указывает необходимость включать в результат пустые строки, которые могут образоваться в результате разделения исходной строки.
Значение по умолчанию: Истина.
Возвращаемое значение:

Тип: Массив.
Массив со строками, которые получились в результате разделения исходной строки.
   RomanYS
 
9 - 27.03.18 - 11:21
Сколько телепатов) 
(0) Договориться с поставщиком файла о формате, иначе разбирать глазами и руками.
   Ц_У
 
10 - 27.03.18 - 11:21
Поделит и сама пустые удалит
 
 
   FFIL0S0FF
 
11 - 27.03.18 - 11:35
Ок
Спасибо, попробую
   Chameleon1980
 
12 - 27.03.18 - 11:40
(10)
пля - тут вопрос в разделителе
   Ц_У
 
13 - 27.03.18 - 11:41
(12) два пробела - за глаза
   George Wheels
 
14 - 27.03.18 - 12:03
(13) Очень многие пользователи после слова сразу нажимают пробел и перед вводом следующего опять нажимают пробел. Получается: "Наименование  отдела" - это будет две колонки.
   Chameleon1980
 
15 - 27.03.18 - 13:22
(13) см. (4)
+ о (8) я думал и так все в курсе.
+ не очень сложно (если платформа не позволяет - бывает) несложно использовать из общих модулей функционал (зачастую есть такое) или нарисовать (содрать гденить) самому.
   FFIL0S0FF
 
16 - 27.03.18 - 13:24
Вообщем сделал вот так:

ТекстовыйДок = Новый ТекстовыйДокумент();
ТекстовыйДок.Прочитать(ПутьКФайлу);
КоличествоСтрок = ТекстовыйДок.КоличествоСтрок();
Для Сч=4 по КоличествоСтрок Цикл
    
 
    СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч);

    МассивЗначений = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,"     "); 
    МасНовЭл = Новый Массив;
    Для Каждого эл из МассивЗначений Цикл
        
     Если эл <> "" Тогда 
         ИндексМас = МассивЗначений.Найти(эл);
         МасНовЭл.Добавить(эл);
     КонецЕсли;
    КонецЦикла; 
    
КонецЦикла;
   Ц_У
 
17 - 27.03.18 - 13:25
(16) встроенная из (8) быстрее
   FFIL0S0FF
 
18 - 27.03.18 - 13:26
Создал 2 массив в который записал не пустые значения.
Вроде как отрабатывает нормально.

Всем кто предлогал идеи спасибо.

Тему считаю закрытой. Если конечно не найдете более простой вариант.
   Ц_У
 
19 - 27.03.18 - 13:28
(18) не читаешь, третий параметр ЛОЖЬ удалит пустые :)
   FFIL0S0FF
 
20 - 27.03.18 - 13:56
(19) Вообщем да...
Прошу прощения.

Я сначала и не понял...
 Я в начале попадал на функцию ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,"     ");она была с 2 переменными. 
а надо было СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,"     ", Истина);
   FFIL0S0FF
 
21 - 27.03.18 - 13:57
Итоговый код :

ТекстовыйДок = Новый ТекстовыйДокумент();
ТекстовыйДок.Прочитать(ПутьКФайлу);
КоличествоСтрок = ТекстовыйДок.КоличествоСтрок();
Для Сч=4 по КоличествоСтрок Цикл
    
 
    СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч);

        МассивЗначений =СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,"     ", Истина);    
        КонецЦикла; 
        
        
    

КонецЦикла;
   FFIL0S0FF
 
22 - 27.03.18 - 13:58
3 параметр "Пропускать путсые строки" значение Истина
   Chameleon1980
 
23 - 27.03.18 - 14:26
(19)
еще раз - неизвестно про платформу, вроде.

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



Список тем форума
Рекламное место пустует   Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует