Имя: Пароль:
1C
1С v8
Чтение текстового файла "не лету"
0 Кондидат В
 
09.02.15
09:34
Всем привет!
Имеется программа, которые пишет в текстовый файл. Прочитать и разобрать уже записанный файл не проблема. Хотелось бы обсудить, как лучше реализовать чтение на лету (как это делает FAR)
1 eklmn
 
гуру
09.02.15
09:36
только через ВК
2 mikecool
 
09.02.15
09:36
постоянно переоткрывать?
3 eklmn
 
гуру
09.02.15
09:36
(2) ну некоторые это могут )
4 1Сергей
 
09.02.15
09:38
(1) не обязательно. Можно через TextStream
5 Кондидат В
 
09.02.15
09:54
Оказалось все просто

    Текст =Новый ЧтениеТекста;
    Текст.Открыть(Имя,,,,ЛОЖЬ);
    Пока ИСТИНА Цикл
        ОбработкаПрерыванияПользователя();
        Стр =Текст.ПрочитатьСтроку();
        Если Стр = Неопределено Тогда
            Продолжить;
        КонецЕсли;
        Сообщить(Стр);
    КонецЦикла
6 Лохматые Уши
 
09.02.15
10:00
(5) Молодец!
7 Кондидат В
 
09.02.15
10:02
Вопрос №2. Каке запустить ее фоном??
8 eklmn
 
гуру
09.02.15
10:06
это называется "сдохнуть от цикла"
9 Кондидат В
 
09.02.15
10:07
(8) ну так в (7) у меня и вопрос соответствующий.
10 Vovan1975
 
09.02.15
10:09
это жесть, я считаю
11 eklmn
 
гуру
09.02.15
10:13
(10) это не просто жесть, это называеться "больное воображение" )
12 Кондидат В
 
09.02.15
10:17
Я так понимаю, что ОбработкаПрерыванияПользователя(); тут кое кому ни о чем не говорит... а все туда же...
13 b_ru
 
09.02.15
10:18
Не нужно так делать. Лучше сделать регламентное задание, которое раз в 5(или сколько нужно) минут будет читать файл обычным образом.
14 Vovan1975
 
09.02.15
10:18
вот глядя на эти ветки начинаешь проникаться полезностью высшего образования
15 piter3
 
09.02.15
10:19
(12)как связаны  Каке запустить ее фоном?? и ОбработкаПрерыванияПользователя?
16 1Сергей
 
09.02.15
10:19
(14) сказал чел, игнорирующий знаки препинания...
17 Провинциальный 1сник
 
09.02.15
10:19
(13) А если файл состоит из пары гигабайт?
Реализация в (5) вполне допустима, только надо всё-таки вставлять паузы, а не задалбывать процессор пустым циклом.
18 Vovan1975
 
09.02.15
10:23
(16) я не работаю журналистом или каким еще писателем
19 Vovan1975
 
09.02.15
10:24
(17) реализация в (5) это бесконечный цикл, это лажа
20 eklmn
 
гуру
09.02.15
10:25
(15) ответа не будет, ибо не было сабжа тогда :)
21 Chameleon1980
 
09.02.15
10:26
опять 77 и во сболтали
22 Chameleon1980
 
09.02.15
10:26
***опять 77 и во 8х сболтали
23 Vovan1975
 
09.02.15
10:27
(21) внимательно смотрим листинг в (5)

это снеговик
24 piter3
 
09.02.15
10:27
(17)еще веселей будет,Если предыдущая сессия загрузки не успеет считать файл
25 Кондидат В
 
09.02.15
10:33
(23) что значит "снеговик"?
Именно в (5) никак. В случае, если будет найдена возможность запуска в фоне то вариант прерыванию будет другой. Да хотя бы созданием файла с опр. именем.

Согласен с (17), но не представляю, как это реализовать.
26 Провинциальный 1сник
 
09.02.15
10:33
А так бы по идее неплохо было дергать ПрочитатьСтроку через фоновые задания.. но тут возникает одна проблема - объект ЧтениеТекста надо делать глобальным, а управляемое приложение не поддерживает глобальных переменных на стороне сервера..
27 tridog
 
09.02.15
10:44
(13) Сколько же Вам остегивают производители оперативной памяти за такие долбанутые советы?
28 ShoGUN
 
09.02.15
10:50
(5) Вроде бы 1С лочит файл на запись при вызове Текст.Открыть. Конфликта не возникает, проверял?
29 Провинциальный 1сник
 
09.02.15
10:56
(28) Не лочит, всё работает
30 b_ru
 
09.02.15
11:16
(17) Пара гигабайт - это не много. Но вообще, конечно, логи нужно резать.

Код в (5), кстати, подразумевает, что твои пару гигабайт будут в оперативке висеть, что вряд ли хорошо.
31 Провинциальный 1сник
 
09.02.15
11:20
(30) "Код в (5), кстати, подразумевает, что твои пару гигабайт будут в оперативке висеть, что вряд ли хорошо."
Ну разумеется, в окне сообщений они зависнут, но это же демка. В реале, конечно, данные будут обрабатываться, а не копиться.