Имя: Пароль:
1C
1С v8
Открыть текстовый файл на чтение-запись без конвертации разделителя строк
0 camojiet
 
22.06.17
12:47
Здравствуйте.
Методы ЧтениеТекста и ТекстовыйДокумент.Прочитать преобразуют разделители строк разных типов (CR,LF,CRLF) в Символы.ПС. Мне нужно чтобы 1С не трогала разделители. Мне нужно получить строкой файл так, как он есть. (Файл со смешанными переносами).
Может сталкивался кто? Стоит ли копать в ДвоичныеДанные, Потоки и т.д. ?

Нужно прочитать такой файл, внести изменения и записать.
1 Chum
 
22.06.17
12:50
открыть файлик блокнотом?
2 mehfk
 
22.06.17
12:53
(0) Писать в конец файла будешь?
3 camojiet
 
22.06.17
12:54
(1) Блокнотом - всё отлично
(2) Нет... увы... Причем количество строк в итоге тоже поменяется
4 mehfk
 
22.06.17
13:01
(3) Тогда это не текстовый файл.
5 kuzyara
 
22.06.17
13:12
ISO-8859-1
6 camojiet
 
22.06.17
13:17
Простите за беспокойство, я ошибся по поводу того, что мне нужен смешанный перенос. Программу устроил Символы.ПС. (по умолчанию ВК+ПС).

(4)  Да. У меня попытка изменить PDF. Нужно отыскать определенные данные и изменить их на другие. (Не просто заменить какой-то символ на другой).
Из внешних утиль подходит Pdfedit - но на винде на нем не запускаются скрипты. Вариант делать через ssh, но он ещё мрачнее. Преобразовалки всякие - пукалки стрелялки - не позволяют прочитать как что-то структурированное произвести изменения и записать обратно как было.
В блокноте получилось(правда как выяснилось не всё), пытаюсь нарисовать алгоритм в 1С.

(5) Спасибо.
7 kuzyara
 
22.06.17
13:17

    // ТекстФайла -> ДД
    ИмяВремФайла = ПолучитьИмяВременногоФайла(".rpb");
    ТекстПостроитель = Новый ЗаписьXML;
    ТекстПостроитель.ОткрытьФайл(ИмяВремФайла,"ISO-8859-1");
    ТекстПостроитель.ЗаписатьБезОбработки(ТекстФайла);    // #13#10 !
    ТекстПостроитель.Закрыть();
    ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ИмяВремФайла);
    УдалитьФайлы(ИмяВремФайла);
  
    Возврат ДвоичныеДанныеФайла;
КонецФункции

Функция ПолучитьМассивПолезныхБайтИзФайлаRPB(ДвоичныеДанныеФайла)
  
    // ДД -> ТекстФайла
    ИмяВремФайла = ПолучитьИмяВременногоФайла(".rpb");
    ДвоичныеДанныеФайла.Записать(ИмяВремФайла);
    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    ТекстовыйДокумент.Прочитать(ИмяВремФайла, "ISO-8859-1", "");
    ТекстФайла = ТекстовыйДокумент.ПолучитьТекст();
    УдалитьФайлы(ИмяВремФайла);

https://pastebin.com/ekX06Uhm
8 camojiet
 
22.06.17
13:21
(7)  Вам тоже спасибо. Может пригодится.