Имя: Пароль:
1C
1С v8
использование метода ПрочитатьСтроку
, , ,
0 Иванов Иван Иваныч
 
03.02.22
08:34
всем привет
вопрос в следующем, есть документ .txt вида (без кавычек, если что):

"Строка 1
Строка 2
"

необходимо получить сначала первую строку в Переменная1, выполнить действия, затем вторую в Переменная2, выполнить другие действия
как это правильно сделать?
заранее спасибо
1 Иванов Иван Иваныч
 
03.02.22
08:37
З.Ы. ранее в документе была одна строка и использовался код

ДокументДляЧтения = Новый ЧтениеТекста;
ДокументДляЧтения.Открыть(Файл.ПолноеИмя);
Строка = ДокументДляЧтения.ПрочитатьСтроку();
ДокументДляЧтения.Закрыть();
2 piter3
 
03.02.22
08:38
СП читал,что у тебя разделителем строк сейчас?
3 Иванов Иван Иваныч
 
03.02.22
08:47
(2) строки в док добавляются методом Документ.ДобавитьСтроку("Строка");
фактически разделителя по сути нету (либо разделитель сама по себе новая строка)
4 Kigo_Kigo
 
03.02.22
08:50
Прямо первая ссылка в гугле
ИмяФайла = "C:\Док.txt";

ВыбФайл = Новый Файл(ИмяФайла);

Если ВыбФайл.Существует() Тогда //проверка на существование файла

Текст = Новый ЧтениеТекста(ИмяФайла);

Строка = Текст.ПрочитатьСтроку();

Пока Строка <> Неопределено Цикл //строки читаются до символа       перевода строки

// манипуляции со строкой

Сообщить(Строка);

Строка = Текст.ПрочитатьСтроку();

КонецЦикла;

Иначе

Сообщить("Файл не найден!");

КонецЕсли;
5 Kigo_Kigo
 
03.02.22
08:52
или так
Текст = Новый ЧтениеТекста("C:\Док.txt");

Строка = Текст.Прочитать(10);

Пока Строка <> Неопределено Цикл //чтение файла по 10 символов

// манипуляции со строкой

Сообщить(Строка);

Строка = Текст.Прочитать(10);

КонецЦикла;
6 Иванов Иван Иваныч
 
03.02.22
08:58
(4) это я тоже читал
проблема в том, что неизвестно что будет написано в первой строке, поэтому мне нужно её получить, проверить что там находится, после этого произвести манипуляции и только потом уже переходить ко второй строке, над которой манипуляции будут совсем другого характера. Если вкратце, то первая строка - это значение реквизита, в зависимости от значения которой будет заполняться реквизит в другой базе, а второе это путь к другому файлу, по которому нужно обращаться
в итоге, как я понимаю, мне данный вариант не особо подходит

было бы неплохо, если бы Текст.Прочитать(10); читал десятую строку, а не 10 символов)
7 acht
 
03.02.22
08:59
(6) > мне нужно
Что мешает тебе это сделать?
8 Иванов Иван Иваныч
 
03.02.22
09:08
(7) спасибо, совет явно дельный
а поконкретнее никак? если никак, то не засоряйте топик, заранее спс
9 acht
 
03.02.22
09:11
(8) Ты определись, обидчивый. Ты хочешь, чтобы за тебя написали готовый код или чтобы тебе рассказали, как работает построчное чтение?
10 Chai Nic
 
03.02.22
09:13
(6) Суть объекта "ЧтениеТекста" и его отличие от объекта "ТекстовыйДокумент" в том, что производится исключительно последовательное чтение. Так что прыгнуть на 10 строчку невозможно. Если нужно прыгать - то грузи в "ТекстовыйДокумент", но учти что это будет лежать в памяти, так что гигабайты так грузить плохая идея.
11 Иванов Иван Иваныч
 
03.02.22
09:14
(9) не обидчивый, а чисто по факту. какой ответ - такой привет
посмотри на (10) и учись влезать в топики
12 acht
 
03.02.22
09:16
(11) Хорошо, дяденька. Так чего ж ты хочешь - готового кода или рассказа о работе построчного чтения?
13 Иванов Иван Иваныч
 
03.02.22
09:16
(10) спасибо большое
там килобайта 3-4 всегда будет
вопрос, после прочтения и использования метода Закрыть() (по-любому должен быть такой или с подобной функцией), в теории, память очистится?
14 Иванов Иван Иваныч
 
03.02.22
09:16
(12) построчное чтение интересует
15 Chai Nic
 
03.02.22
09:18
(13) Даже если не закрывать. Сборщик мусора обязан вычистить объект, когда его область видимости исчезнет. Если конечно не объявлять его глобально)
16 acht
 
03.02.22
09:24
(14) При использовании ЧтениеТекста каждая отдельная строка читается при помощи метода ПрочитатьСтроку. При этом для определения конца строки используется разделитель строки, которйы может быть переопределен параметром метода.
При чтении указатель на следующие данные для чтения смещается автоматически. Если метод возвращает Неопределено, значит текст кончился.

Так как ты записываешь через текстовый документ, (Документ.ДобавитьСтроку) то при записи будет использован разделитель, указанный в реквизите РазделительСтрок объекта, содержащего исходный текст.

Таким образом ты просто читаешь первую строку, получаешь значение, читаешь следующую, получаешь значение, повторяешь по необходимости.
17 Megas
 
03.02.22
09:24
(3) Даже интересно стало - как это нет разделителя строк. - Наверное Символ.ПС
А вообще У многострочной строки есть метод получение строки по номеру строки
СтрПолучитьСтроку(<Строка>, <НомерСтроки>)
18 Megas
 
03.02.22
09:26
(17)+
Во, а вообще метод Прочитать читает построчно

ЧтениеТекста (TextReader)
ПрочитатьСтроку (ReadLine)
Синтаксис:

ПрочитатьСтроку(<Разделитель>)
Параметры:

<Разделитель> (необязательный)

Тип: Строка.
Разделитель строк. Если не указан, то совпадает с указанным при открытии файла.
Значение по умолчанию: ПС
Возвращаемое значение:

Тип: Строка; Неопределено.
В случае, если читаемый файл завершен, то возвращается Неопределено.
Описание:

Считывает строку текста, ограниченную разделителем.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Строка нулевой длины не является признаком конца файла.
Пример:

Текст = Новый ЧтениеТекста("d:\win.txt", КодировкаТекста.ANSI);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
    Сообщить(Стр);
    Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
19 Kigo_Kigo
 
03.02.22
09:49
(6) см ->(5) "в итоге, как я понимаю, мне данный вариант не особо подходит"
Да вам не подходит вообще программирование как таковое ....
20 mistеr
 
03.02.22
10:16
(14) Не забывай обработать случай, когда второй строки в файле не окажется.
21 fisher
 
03.02.22
10:56
(19) Ну, просто чуваку стоило бы сразу написать "начинаю изучать программирование вообще и 1С в частности, информатику прогуливал, ногами не бейте".
22 Иванов Иван Иваныч
 
03.02.22
11:34
(19) спасибо, буду знать, можете себе письку облизнуть если дотянетесь, Вы этим комментом явно сделали мир лучше)
23 Иванов Иван Иваныч
 
03.02.22
11:35
(20) данная ситуация по условиям выгрузки исключена, или выгрузилось и всё есть, или не выгрузилось и ничего нету
24 Иванов Иван Иваныч
 
03.02.22
11:36
всем спасибо за помощь, уверен инфы за глаза хватит чтобы правильно реализовать что надо
25 mistеr
 
03.02.22
11:37
(23) Сам пишешь "ранее в документе была одна строка", значит могут подсунуть старый файл.
26 Иванов Иван Иваныч
 
03.02.22
11:39
(25) нет, нет, это я реализую выгрузку из одной базы в другую, на боевой ещё не ушло и пока я самолично властвую над файлами)
просто сейчас правки пришли и пришлось добавить вторую строку
27 Kigo_Kigo
 
03.02.22
11:49
(22) Да всегда, пожалуйста, не забывайте выполнять упражнения, мне не нать
а по факту, тебе уже накидали переборы своего текста в цикле и там хоть на письку его клади и близывай как хошь, нет, тебе же это не подходит правда?
Пиздецнакуймлять *Обстенку.jpeg*
28 vladmenleo
 
03.02.22
12:07
(26) Пока на боевую не перешел, переходи на 7.7, там это реализовано
Текст = СоздатьОбъект("Текст");
    Текст.Открыть("ТутТвоеИмяФайла");
    Для Ид = 1 По Текст.КоличествоСтрок() Цикл
        Стр = Текст.ПолучитьСтроку(Ид);
        // и делай с ней, что хош!
    КонецЦикла;
29 acht
 
03.02.22
12:28
(22) > можете себе письку облизнуть
Какой у тебя богатый опыт, однако.
А в 1С так и не можешь, хоть и взрослый.
30 Иванов Иван Иваныч
 
03.02.22
12:34
(29) однако мочь в 1с не перестаю учиться, насчет опыта - заезжено и уже не смешно. Как уже было выше сказано: какой привет - такой ответ
я за конструктив, однако когда его нет, то и я не вижу смысла его соблюдать
31 acht
 
03.02.22
12:41
(30) > не перестаю учиться
Не обманывай себя. Что три года назад в Создание ТЗ 1С 8.3 , что здесь - никакого улучшения.
32 Иванов Иван Иваныч
 
03.02.22
12:48
(31) за эти три года я ни дня не кодил почти)
последние полгода только решил в итоге плотно уйти сюда, больше нравится чем другие языки