Имя: Пароль:
1C
1C 7.7
v7: как текстовый файл ~2мб быстро загрузить в многострочную строку
,
0 perkos
 
06.12.12
12:17
работать с этим файлом оч медленно....
1 КонецЦикла
 
06.12.12
12:17
Запросом?
2 Mikeware
 
06.12.12
12:21
собрался парсить mlg?
3 perkos
 
06.12.12
12:22
(1) как запросом?
(2) да не, просто файл дают такой надо по нему отчет делать
4 1Сергей
 
06.12.12
12:22
копипасте, не?
5 Ёпрст
 
06.12.12
12:23
через fso
6 Ёпрст
 
06.12.12
12:23
можно и быстрее
7 Balabass
 
06.12.12
12:24
читай построково и в ТЗ засовывай через ФСО.
8 perkos
 
06.12.12
12:26
ткст = СоздатьОбъект("Текст");
   ткст.Открыть(ПутьКФайлу);
   
   колСтрок = ткст.КоличествоСтрок();
   
   Файл="";
   
   Для ы=1 По колСтрок Цикл
       
       Файл = Файл + ткст.ПолучитьСтроку(ы)+РазделительСтрок;
       
       Состояние("Загрузка файла в память "+Окр(ы/колСтрок,2)*100+"%");
       
   КонецЦикла;

вот это выполняется пару минут даже на оч быстрой тачке

(5) плохо гуглится, есть че поподробнее?
9 Mikeware
 
06.12.12
12:26
(3) если по нему отчет - наверное, csv?
дык для csv есть более другие методы..
10 ДенисЧ
 
06.12.12
12:28
попробуй ЧтениеТекста...
11 perkos
 
06.12.12
12:36
(10) чье это? я по 1с7
12 ДенисЧ
 
06.12.12
12:36
(11) ой...
тады (5)
13 perkos
 
06.12.12
12:37
(9) csv? файл текстовый просто, не форматный, обработчик я для него сделал просто медленно очень...

чейто ФСО?
14 ДенисЧ
 
06.12.12
12:40
15 perkos
 
06.12.12
12:42
ы=1;
   FSO=СоздатьОбъект("Scripting.FileSystemObject");
   File=FSO.GetFile(ПутьКФайлу);
   TextStream=File.OpenAsTextStream(1);
   Пока TextStream.AtEndOfStream=0 Цикл
         //Стр_ = TextStream.ReadLine();  
         Файл = Файл + СокрЛП(TextStream.ReadLine())+РазделительСтрок;
         Состояние("Загрузка файла в память "+Окр(ы/колСтрок,2)*100+"%");
         ы=ы+1;
   КонецЦикла;
   TextStream.Close();

так вот попробовал тоже тягомотно
16 eRik
 
06.12.12
12:43
в V7plus есть свои методы для работы с текстовиками.
тож медленно?
17 Дык ё
 
06.12.12
12:50
18 FN
 
06.12.12
21:04
FSO=СоздатьОбъект("Scripting.FileSystemObject");
   File=FSO.GetFile(ПутьКФайлу);
   TextStream=File.OpenAsTextStream(1);
   Файл =TextStream.Read(File.Size);
   TextStream.Close();

Так вообще должно быть почти мгновенно.

Ищи тормоза в другом месте
19 oslokot
 
06.12.12
21:54
(0)
не решение твоей траблы, но я бы убрал из цикла
Состояние("Загрузка файла в память "+Окр(ы/колСтрок,2)*100+"%");
ибо замедляет
20 Fragster
 
гуру
06.12.12
22:02
через ADO можно запрос делать, если это текст с разделителями или с полями фиксированной длины
21 Torquader
 
07.12.12
00:52
Вопрос - а в чём смысл загрузки сразу всего файла в память - не проще ли его читать построчно ?
P.S. я при помощи Scripting.FileSystemObject образы дисков читал - и ничего - работало.