Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 июн 2024, 09:35

Чтение текстового файла с ftp сервера

Автор Soulidium, 15 июл 2013, 10:10

0 Пользователей и 2 гостей просматривают эту тему.

Soulidium

Подскажите как прочитать текстовый файл который находится на ftp сервере?
Остановился на этапе поиска текстовых файлов.

СерверФТП.УстановитьТекущийКаталог(КаталогRS+"/out");
ФайлыTXT = СерверФТП.НайтиФайлы(СерверФТП.ТекущийКаталог(),"*.txt");
Для Каждого Файл Из ФайлыTXT Цикл
       ВремФайл = ПолучитьИмяВременногоФайла("txt");
       СерверФТП.Получить(Файл.Имя,ВремФайл);

..................................................................................

КонецЦикла;

Soulidium

Так вот тоже не получается...

СерверФТП.УстановитьТекущийКаталог(КаталогRS+"/out");
ФайлыTXT = СерверФТП.НайтиФайлы(СерверФТП.ТекущийКаталог(),"*.txt");
Для Каждого Файл Из ФайлыTXT Цикл
    ТекстДок = Новый ТекстовыйДокумент;
    ТекстДок.Прочитать("ftp://***.***.***.***/out/"+Файл.Имя);
КонецЦикла;

Текст ошибки:

{Обработка.ЧтениеФайла.Форма.Форма.Форма(44)}: Ошибка при вызове метода контекста (Прочитать)
ТекстДок.Прочитать("ftp://***.***.***.***/out/"+Файл.Имя);
по причине:
Файл не обнаружен 'file://ftp://***.***.***.***/out/file.txt

Dethmontt

А что не получается в первом варианте?

СерверФТП.УстановитьТекущийКаталог(КаталогRS+"/out");
ФайлыTXT = СерверФТП.НайтиФайлы(СерверФТП.ТекущийКаталог(),"*.txt");
Чтение = Новый ЧтениеТекста;
Для Каждого Файл Из ФайлыTXT Цикл
       ВремФайл = ПолучитьИмяВременногоФайла("txt");
       СерверФТП.Получить(Файл.Имя,ВремФайл);
       Чтение.Открыть(ВремФайл);

       СтрокаТекст = Чтение.Прочитать();
                       
КонецЦикла;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Soulidium

Цитата: Dethmontt от 15 июл 2013, 12:16
А что не получается в первом варианте?
Проблема в том, что я не знал что делать дальше. Не знал про "ЧтениеТекста":) Спасибо!

Soulidium

Подскажите кто нибудь как решить проблему. В цикле перебираю файлы c ftp, разбиваю на строки и заношу строки в массив (то что массив затирается каждый раз уже понял, исправлю :)) Дело в том, что на этапе считывания 2го файла начинается ругань на 14ю строку СерверФТП.Получить(Файлtxt.Имя,ВремФайл); А 1й файл считывается нормально, дальше происходит, то что нужно...

Текст ошибки:
{Обработка.ЧтениеФайла.Форма.Форма.Форма(365)}: Ошибка при вызове метода контекста (Получить)
                  СерверФТП.Получить(Файлtxt.Имя,ВремФайл);
по причине:
Ошибка работы с Интернет:  ftp://***.***.***.***:****ftp: couldn't retrieve (RETR failed) the specified file


********************************************************
1 Если ФайлыTXT.Количество() > 0 Тогда
2 Чтение = Новый ЧтениеТекста;
3 Для Каждого Файлtxt Из ФайлыTXT Цикл
4 Запрос = Новый Запрос;
5 Запрос.Текст = "ВЫБРАТЬ
6                | ДокументыСозданий_ИзмененийСрезПоследних.НомерДокумента
7                |ИЗ
8                | РегистрСведений.ДокументыСозданий_Изменений.СрезПоследних(&Дата, НомерДокумента = &НомерДокумента) КАК ДокументыСозданий_ИзмененийСрезПоследних";
9 Запрос.УстановитьПараметр("Дата",ТекущаяДата());
10 Запрос.УстановитьПараметр("НомерДокумента",Файлtxt.ИмяБезРасширения);
11 Результат = Запрос.Выполнить().Выбрать();
12 Если НЕ Результат.Количество() > 0 Тогда
13 ВремФайл = ПолучитьИмяВременногоФайла("txt");
14 СерверФТП.Получить(Файлtxt.Имя,ВремФайл);
15    Чтение.Открыть(ВремФайл);
16 Массив = Новый Массив;
17 Массив.Добавить(Файлtxt.ИмяБезРасширения);
18 СтрокаТекст = Чтение.ПрочитатьСтроку();
19 Пока СтрокаТекст <> Неопределено Цикл
20 Массив.Добавить(СтрокаТекст);
21 СтрокаТекст = Чтение.ПрочитатьСтроку();
22 КонецЦикла;
23 Иначе
24 Массив = 0;
25 КонецЕсли;
26 СерверФТП.УстановитьТекущийКаталог(КаталогRS+"/in");
27 ТекстДок = Новый ТекстовыйДокумент;
28 Файл = ПолучитьИмяВременногоФайла("txt");
29 ТекстДок.Записать(Файл);
30 СерверФТП.Записать(Файл,Файлtxt.ИмяБезРасширения+"+"+".txt");
31 КонецЦикла;
32 КонецЕсли;
********************************************************

Dethmontt

СерверФТП.Записать(Файл,Файлtxt.ИмяБезРасширения+"+"+".txt");
Чтение.Закрыть();
КонецЦикла;

Добавлено: 17 июл 2013, 15:17


Возможно у тебя соединение рвется с фтп по таймауту или из за связи
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Soulidium

Не получается :dfbsdfbsdf: Так же ошибка...
Добавлено: 17 июл 2013, 15:19


Цитата: Dethmontt от 17 июл 2013, 14:59
СерверФТП.Записать(Файл,Файлtxt.ИмяБезРасширения+"+"+".txt");
Чтение.Закрыть();
КонецЦикла;

Добавлено: 17 июл 2013, 15:17


Возможно у тебя соединение рвется с фтп по таймауту или из за связи
Попробую задержку поставить в цикле...
Добавлено: 17 июл 2013, 15:22


Цитата: Soulidium от 17 июл 2013, 15:16Попробую задержку поставить в цикле...
И с задержкой не получается :fdbsdfbsd:

Добавлено: 17 июл 2013, 15:24


Цитата: Dethmontt от 17 июл 2013, 14:59Возможно у тебя соединение рвется с фтп по таймауту или из за связи
Так к слову, ftp у меня компьютере.


Добавлено: 17 июл 2013, 15:36


Есть идея загрузить файл на Диск и потом уже с Диска, при помощи ТекстовыйДокумент, считывать файл построчно в массив. Но идея с засорением диска не очень нравится... 

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск