Имя: Пароль:
1C
 
ТекстовыйДокумент. ЗаменитьСтроку. v8.3
0 stslit
 
10.10.24
11:39
Добрый день!

Цель, делать резервирование некоторых данных из обработки без изменения конфигурации и прикручивания SQL. Файлы разбиты по месяцам. Нагрузка до 1000 строк на файл.

Решение. Нужно открыть текст файл, заменить строку (номер есть), записать данные.
Код ниже дублирует содержимое файла записывая его в конец, при этом строка не заменяется. Есть решение как это поправить? Сейчас склоняюсь к перезаписи всего файла через потоки, а не его части.

ЗаписьДанных  = Новый ТекстовыйДокумент;    
        ЗаписьДанных.Прочитать(запФайл, КодировкаТекста.UTF8);
//код формирования json
ЗаписьДанных.ЗаменитьСтроку(стрЗап, строкЖС);      
        //ЗаписьДанных.ЗаписатьСтроку(строкЖС);
        ЗаписьДанных.Записать(запФайл);
1 Волшебник
 
10.10.24
11:42
"ТекстовыйДокумент" работает медленно
конечно ЧтениеТекста и ЗаписьТекста
2 stslit
 
10.10.24
11:42
Есть еще вариант дописывать данные в конец файла и читать файл с конца. Это увеличение числа строк и дублирование данных. Но есть вероятность, что будет быстрее.
3 stslit
 
10.10.24
12:16
(1) Спасибо!

Вариант кода не меняет файл

ЗаписьДанных  = Новый ЗаписьТекста(запФайл, КодировкаТекста.UTF8);
// формирование строки строкЖС
ЗаписьДанных.ЗаменитьСтроку(стрЗап, строкЖС);              
ЗаписьДанных.Закрыть();

Метода ЗаменитьСтроку нет для ЗаписьТекста (
Буду переписывать файл через Потоки (
Переписывать 200к символов не будет сильно подтормаживать интерфейс.
4 Мультук
 
10.10.24
12:21
(0)

Ну дык напишите тестовую обработку, которая

а) Генерит файл на 1000 строк

б) Делает

ЗаписьДанных  = Новый ЗаписьТекста(запФайл, КодировкаТекста.UTF8);
ЗаписьДанных.ЗаменитьСтроку(347, "Мама мыла раму");              
ЗаписьДанных.Закрыть();

Может кто и посмотрит

в) в вашей строкЖС переносы строк есть ?
5 Галахад
 
10.10.24
13:25
Да вроде в (0) рабочий код. Может что с данными?
6 stslit
 
10.10.24
16:46
(4) Сделал, все работает, а потом дальше...
(5) Да, с данными. Изменился формат записи данных.

Всем большое спасибо!
Иногда нужно делать перерыв, на рюмочку чая %)

P.S.
Если появятся идеи или ссылки о реализации требуемого функционала, буду признателен. Может этот костыль заменю на что-то более подходящее.