Версия для печати темы (https://pro1c.org.ua/index.php?s=cfa2b7fcca0b2d4433b4b7d4e55d833f&showtopic=15101)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Удаление файла с FTP сервера

Автор: Bernet 25.10.13, 14:34

Доброго времени суток! Наболел ещё 1 вопрос, задача в следующем: Нужно получить файл (xml) с FTP сервера, распарсить, занести данные в базу и удалить файл на FTP сервере.
Использую объект FTPСоединение, ищу нужный мне файл, получаю его, заношу данные в базу - тут все без проблем. Но когда пытаюсь удалить файл через метод Соединение.Удалить(<ПутьКФайлу>,<МаскаПоиска>), то выдает ошибку "Ошибка аутентификации при доступе к ресурсу", не понимаю из-за чего, ведь под этим соединением скачать файлы с сервера получилось. Думал может проблема в самом соединении, может какой-то тайм-аут срабатывает, решил перед удалением переподключиться, но все равно удалить не дает, хотя подключение проходит и файл находит.
Сразу отвечаю на следующий вопрос - права на удаление у пользователя есть, я через тотал командер захожу на FTP и могу удалить любой файл, но соединение через 1С не дает.
Благодарен за ваши предложения.


 ! 

Правила, п.5
 

Автор: Fabri 25.10.13, 15:14

Скопируйте Ваш код:

Соединение.Удалить(<ПутьКФайлу>,<МаскаПоиска>)

Возможно вы указываете файл в строке вот так:
Соединение.Удалить("/www/path/file.txt")

А по логике правильно использовать так:
Соединение.Удалить("/www/path/","file.txt")

Автор: Bernet 25.10.13, 15:54

благодарю Farbi, ваш ответ помог) Как то неоднозначно они написали в СП

Цитата
Синтаксис:

Удалить(<Путь>, <Маска>)
Параметры:

<Путь> (обязательный)

Тип: Строка.
Путь к удаляемым файлам на сервере.
<Маска> (необязательный)

Тип: Строка.
Маска для выбора файлов.


я и давал на вход полный путь к файлу, включая имя, т.е. Соединение.Удалить("/www/path/file.txt") и маску задавал "*.xml" - я думал это чтоб быстрее файлы отбирало, расширение указывать нужно. А выходит нужно как вы сказали Соединение.Удалить("/www/path/","file.txt") и все взлетело. Ещё раз спасибо smile.gif icon_beer17.gif

Автор: logist 25.10.13, 15:57

Цитата(Bernet @ 25.10.13, 16:54) *
Как то неоднозначно они написали в СП

Почему же неоднозначно, очень даже однозначно - путь к удаляемым файлам, т.е. путь к файлам, а не путь к файлу, и не имя файла включая полный путь.

Автор: Bernet 25.10.13, 16:01

Ну может и так. Меня с толку сбила Маска, в моем понимании это ".xml", ".txt" - словом расширения файлов, а не фактически сами файлы (наименование+расширение), вот и полетел биться головой в стену... ну да ладно, главное удалось разобраться и вопрос закрыт

Автор: Fabri 25.10.13, 16:14

Цитата
в моем понимании это ".xml", ".txt"

Маска (шаблон) — имена файлов, в которых используются символы «*» и «?». Символ «?» заменяет один любой символ. Символ «*» заменяет любое число произвольных символов. Например, маска text?.doc означает все файлы с именами text1.doc , text2.doc , texta.doc и т.д.

Возмжно Вы начинали не из MSDOS и книги Фигурнова - IBM PC для пользователя smile.gif

Автор: Bernet 25.10.13, 16:19

однозначно не с них wink.gif

Цитата(Fabri @ 25.10.13, 17:14) *
Маска (шаблон) — имена файлов, в которых используются символы «*» и «?». Символ «?» заменяет один любой символ. Символ «*» заменяет любое число произвольных символов. Например, маска text?.doc означает все файлы с именами text1.doc , text2.doc , texta.doc и т.д.


это мне знакомо ещё с универа, когда в Access'e запросы пробовали писать) но я почему-то про это не вспомнил sad.gif

Автор: Ardi 25.10.13, 16:48

Цитата(Fabri @ 25.10.13, 17:14) *
Возмжно Вы начинали не из MSDOS и книги Фигурнова - IBM PC для пользователя

Фигурнов поди милиардер.

Автор: logist 20.11.13, 11:20

Встряну и я со своей проблемой. Не удаляется файл с фтп, ошибка "Quote command returned error"

Процедура удаления проста:

Процедура УдалитьФайлыСТСД(ТаблицаФайлов)
    ФТП = Новый FTPСоединение(СокрЛП(ОбработкаОбъект.IP_PDT));
    Для Каждого ФайлТСД Из ТаблицаФайлов Цикл
        Попытка
            ФТП.УстановитьТекущийКаталог(ФайлТСД.Путь); // Текущий каталог устанавливается корректно
            ФТП.Удалить(ФайлТСД.Путь,ФайлТСД.Имя);        
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;    
    КонецЦикла;
    ФТП = Неопределено;
КонецПроцедуры


Создание новых и чтение файлов происходит без ошибок. Ошибки только при удалении, тестово пробовал переместить файл, та же ошибка что и при удалении.

Автор: pablo 20.11.13, 11:32

ФайлТСД.Путь содержит в конце слэш/бэкслэш?

Автор: logist 20.11.13, 11:48

Цитата(pablo @ 20.11.13, 12:32) *
ФайлТСД.Путь содержит в конце слэш/бэкслэш?

Содержит, пробовал и без слэша, результат тот же.

Путь и Имя файла получены через НайтиФайлы, так что они там присутствуют. Через обычный ФТП клиент удаляется нормально.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua