Как загрузить TXT файл ?

1. cbr777 22.03.07 19:58 Сейчас в теме
Здравстуйте!

Простите за чайниковский вопрос:
Как загрузить TXT файл такого содержания (в комп.:Список) :

"001","Васильев Федор Степанович","Менеджер"
"002","Григорьев Сергей Геннадиевич","Менеджер" "003","Крылова Екатерина Петровна","Швея

Заранее благодарен .
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vasilykushnir 63 22.03.07 20:11 Сейчас в теме
Кавычки присутствуют в файле?
3. cbr777 22.03.07 20:16 Сейчас в теме
4. vasilykushnir 63 22.03.07 20:16 Сейчас в теме
Ладно, пора домой - попробую угадать.
Открываешь файл, в цикле читаешь записи, каждую запись - из строки с разделителями в СЗ, а далее из СЗ распихиваешь, куда надо.
5. vasilykushnir 63 22.03.07 20:17 Сейчас в теме
Завтра стукни в аську - погутарим.
6. agressor 123 22.03.07 20:39 Сейчас в теме
Вот процедура загоняющая данные из текстового файла записанные через разделитель в таблицу значений
выдрал кусок со своей настройки, работоспособность выдраного куска не проверял... )))

Код
// ===============================
Процедура ДанныеВТбЗн(ИмяФайла,ТбЗн,Разделитель,ПропуститьСтрок)  
   
   Т = СоздатьОбъект("Текст");
   Если ФС.СуществуетФайл(ИмяФайла)=0 Тогда
      Предупреждение("Не могу найти файл данных "+ ИмяФайла + РазделительСтрок +
      "Проверьте каталог импорта.");
      Возврат;
   КонецЕсли;
   Т.Открыть(ИмяФайла);
   Если Т.КоличествоСтрок()=0  Тогда
      Предупреждение("Файл данных "+ИмяФайла+" пуст!");
      Возврат;
   КонецЕсли;
   НомСтр=0;
   Для С=1 По Т.КоличествоСтрок() Цикл  
      Если С <= ПропуститьСтрок Тогда  
         Продолжить;
      КонецЕсли;
      Данные=Т.ПолучитьСтроку(С);  
      Если СокрЛП(Данные)<>"" Тогда
         СтрТмп = Данные;
         НомСтр=НомСтр+1;
         ТбЗн.НоваяСтрока(НомСтр);
         НомКол = 0;
         Пока СтрДлина(СтрТмп) <> 0 Цикл
            Поз = Найти(СтрТмп,Разделитель);
            Если Поз <> 0 Тогда
               НомКол = НомКол + 1;  
               Попытка
                  ТбЗн.УстановитьЗначение(НомСтр,НомКол, Сред(СтрТмп,1,Поз-1));
               Исключение   
                  Сообщить("Не загружена колонка "+СокрЛП(Строка(НомКол))+", недостаточно колонок в таблице значений.");
               КонецПопытки;            
               СтрТмп = Сред(СтрТмп,Поз+1,СтрДлина(СтрТмп)-Поз);
            Иначе
               НомКол = НомКол + 1;
               ТбЗн.УстановитьЗначение(НомСтр, НомКол, СтрТмп);
               СтрТмп = "";
            КонецЕсли;
         КонецЦикла;
      КонецЕсли;           
   КонецЦикла;
КонецПроцедуры
            
ФайлИмпорта = "C:\import.txt";   
Разделитель = ",";
КоличествоКолонок = 10;
ПропуститьСтрок = 0; // если есть шапка (описание полей) указать сколько строк пропустить
ТбЗн = СоздатьОбъект("ТаблицаЗначений");
ТбЗн.КоличествоКолонок(КоличествоКолонок);
ДанныеВТбЗн(ФайлИмпорта,ТбЗн,Разделитель,ПропуститьСтрок); 

Показать полностью
7. Abadonna 3960 23.03.07 17:20 Сейчас в теме
СтрТмп = Сред(СтрТмп,Поз+1,СтрДлина(СтрТмп)-Поз);
Узнается почерк 1С-вских фирмачей!

Стр=Т.ПолучитьСтроку(А);
Стр=СтрЗаменить(Стр,",",РазделительСтрок) // получили многострочную
Ном=СтрПолучитьСтроку(Стр,1);
ФИО=СтрПолучитьСтроку(Стр,2);
и т.д. и т.п.


8. vasilykushnir 63 23.03.07 18:41 Сейчас в теме
cbr777, хочу заметить, что Абадонна предложил универсальный метод - можешь смело положить в основу универсальной процедуры в глобальнике. Но что касается конкретно твоего случая:
"001","Васильев Федор Степанович","Менеджер"
видно невооруженным взглядом, что это было получено с помощью ВСтрокуСРазделителями, значит и обратно в список значений, как два пальца:
Стр=Т.ПолучитьСтроку(А);
сз.ИзСтрокиСРазделителями(Стр)
А дальше из СЗ по номеру выбираешь, что надо 1 - "001", 2 - "Васильев Федор Степанович" и т.д. (кавычек уже не будет).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот