Добрый день.
Пытаюсь скачать файлы с ftp ресурса
Сервер.НайтиФайлы файлы находит, но я не могу никак их скопировать.
В результате создаются пустые файлы в нужной мне папке, с теми же именами, что и на ftp. Никак не могу разобраться как все это работает.
Пытаюсь скачать файлы с ftp ресурса
ИмяСервераFTP = "ТУТ СЕРВЕР";
ИмяПользователяFTP = "пользователь";
ПарольFTP = "пароль";
порт = 21;
ТекущийКаталогFTP = "emission";
Сервер = Новый FTPСоединение(СокрЛП(ИмяСервераFTP),порт,
СокрЛП(ИмяПользователяFTP),
СокрЛП(ПарольFTP),,Ложь);
Попытка
Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);
Исключение
КонецПопытки;
СписокФайлов = Сервер.НайтиФайлы("", "*.txt", истина);
ПутьКПриходу = Константы.ПутьЗагрузка.Получить();
КудаЗаписать = СтрЗаменить(ПутьКПриходу,"\","/") + "/";
Для каждого Файл из СписокФайлов Цикл
Сервер.Получить(Файл.Имя,КудаЗаписать + Файл.Имя);
КонецЦикла;
ПоказатьСервер.НайтиФайлы файлы находит, но я не могу никак их скопировать.
В результате создаются пустые файлы в нужной мне папке, с теми же именами, что и на ftp. Никак не могу разобраться как все это работает.
По теме из базы знаний
- Обработка для загрузки и выгрузки информации с FTP
- УРБД: Автоматический обмен через интернет между центральной и периферийными базами в Windows 7 + 1С:Предприятие 7.7.
- Выгрузка остатков в Excel локально, либо на FTP ресурс регламентным (фоновым) заданием по расписанию. УТ 11.4, КА 2, ERP 2
- Собираем образ виртуальной машины с PostgreSQL и платформой 1С. Цикл "Многопоточный CI для 1С c Packer, Vagrant и Jenkins", часть 2
- Автоматическая обработка файлов по расписанию для загрузки номенклатуры из Excel. Универсальная обработка для запуска других связанных обработок - загрузка файла из Интернета по протоколу http(s), ftp. Доступно скачивание за стартмани.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попытка
НашеСоединение = Новый FTPСоединение(Адрес, , Логин, Пароль , ,Истина );
Исключение
Сообщить("Ошибка создания соединения: "+ОписаниеОшибки());
Возврат;
КонецПопытки;
Массив = НашеСоединение.НайтиФайлы("/", Настройки.ФайлНачинаетсяС+"*.*");
Для каждого файл Из массив Цикл
НашеСоединение.Получить(Файл.ПолноеИмя, "C:\Import\"+"1.dbf");
КонецЦикла;
ПоказатьУ меня этот код отрабатывает корректно
второй раунд секса с FTP
У меня получилось записать файл на ftp и скопировать от туда файл.
Но Сервер.Переместить(Файл.ПолноеИмя,КудаЗаписать + Файл.Имя) выдает ошибку Quote command returned error .
Т.е. при попытке удалить файл с ftp он ругается.
В интернетах пишут что удаление по неведомой причине происходит не из папки, которую я указываю (Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);), а из корня сервера ftp.
Может кто то знает как сразу подключиться к конкретной папке, без УстановитьТекущийКаталог ???
У меня получилось записать файл на ftp и скопировать от туда файл.
Но Сервер.Переместить(Файл.ПолноеИмя,КудаЗаписать + Файл.Имя) выдает ошибку Quote command returned error .
Т.е. при попытке удалить файл с ftp он ругается.
В интернетах пишут что удаление по неведомой причине происходит не из папки, которую я указываю (Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);), а из корня сервера ftp.
Может кто то знает как сразу подключиться к конкретной папке, без УстановитьТекущийКаталог ???
фуф. я не понимаю как эта штука работает.
Файлы удалить получилось с 20 раза. Вот что в результате я нарисовал
Файлы удалить получилось с 20 раза. Вот что в результате я нарисовал
ИмяСервераFTP = "Тут сервер";
ИмяПользователяFTP = "ИмяПользователя";
ПарольFTP = "Пароль";
порт = 21;
ТекущийКаталогFTP = "emission";
Сервер = Новый FTPСоединение(СокрЛП(ИмяСервераFTP),порт,
СокрЛП(ИмяПользователяFTP),
СокрЛП(ПарольFTP),,);
Попытка
Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);//папка на ftp сервере в которую загружаем
Исключение
КонецПопытки;
СписокФайлов = Сервер.НайтиФайлы("", "*.*", истина);
ПутьКПриходу = Константы.ПутьЗагрузка.Получить();
КудаЗаписать = СтрЗаменить(ПутьКПриходу,"\","/") + "/";
Для каждого Файл из СписокФайлов Цикл
Сервер.Получить(Файл.Имя,КудаЗаписать + Файл.Имя);
Сервер.Удалить(Файл.Имя);
КонецЦикла;
Показать
(8) Ваш способ не помог ((( т.к. был реализован.
История проста.
Был FTP на Filezilla Server - все отрабатывало на ура.
Понадобилось сменить. Поднял на роутере - из мобильных устройств, других клиентов без проблем добавление/удаление.
Из 1С8 - не удаляет. Полдня потратил. Потом плюнул, и для удаления использовал старый, добрый curl.
Заплатка сработала как надо
История проста.
Был FTP на Filezilla Server - все отрабатывало на ура.
Понадобилось сменить. Поднял на роутере - из мобильных устройств, других клиентов без проблем добавление/удаление.
Из 1С8 - не удаляет. Полдня потратил. Потом плюнул, и для удаления использовал старый, добрый curl.
Попытка
Порт = 21;
фтп = Новый FTPСоединение(СокрЛП(Адрес),порт, СокрЛП(Логин), СокрЛП(Пароль),,);
фтп.УстановитьТекущийКаталог(Путь);//папка на ftp сервере в которую загружаем
СписокФайлов = фтп.НайтиФайлы("", "123.xlsx", истина);
Для Каждого ф Из СписокФайлов Цикл
//Сообщить(ф.ПолноеИмя);
Попытка
фтп.Удалить(ф.Путь, ф.Имя);
//фтп.Удалить(, ф.Имя);
Исключение
//мCurl = ПолучитьМакет("Curl");
мCurl = УФПолучитьМакет();
//// 1 - й вариант
//АдресВХ = ПоместитьВоВременноеХранилище(мCurl);
//Файл = ВремКаталог + Строка(Новый УникальныйИдентификатор()) + "." + СтрокаДанных.Расширение;
//ПолучитьФайл(АдресВХ, Файл, Истина);
// 2-й вариант
ПутьCurl = КаталогВременныхФайлов() + "curl.exe";
мCurl.Записать(ПутьCurl);
Shell = Новый COMОбъект("Wscript.Shell");
Shell.Run(ПутьCurl + " -u " + СокрЛП(Логин) + ":" + СокрЛП(Пароль) + " ftp://" + СокрЛП(Адрес) + "/" + СокрЛП(Путь) + "/ -Q ""-DELE " + ф.Имя + """" , 0, 1);
УдалитьФайлы(ПутьCurl);
КонецПопытки;
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
фтп = Неопределено;
ПоказатьЗаплатка сработала как надо
(8)
Столкнулся с такой же проблемой - и прав хватает и читается без проблем, а удалять не давало, по вашему примеру прошло.
Прочисал интернет, ответа не нашел, начал разбираться что пошло не так.
Оказалось что 1с не нормально восприняла символ ":" в имени файла (к примеру в файле "FileType_2018-12-11T15:09:20_DocNumber.xml"), она в таком случае обрезала имя до "FileType_2018-12-11T15".
Договорились не ставить разделитель по времени и все сразу заработало.
Может кому-то еще пригодиться.
Столкнулся с такой же проблемой - и прав хватает и читается без проблем, а удалять не давало, по вашему примеру прошло.
Прочисал интернет, ответа не нашел, начал разбираться что пошло не так.
Оказалось что 1с не нормально восприняла символ ":" в имени файла (к примеру в файле "FileType_2018-12-11T15:09:20_DocNumber.xml"), она в таком случае обрезала имя до "FileType_2018-12-11T15".
Договорились не ставить разделитель по времени и все сразу заработало.
Может кому-то еще пригодиться.
АдресСайта = //"1.1.1.1" ;
Порт = 21;
Логин = "Логин";
Пароль = "пароль";
ИмяКаталога = /"data/1c";
FTPСоединение = Новый FTPСоединение(АдресСайта,Порт,Логин,Пароль);
FTPСоединение.УстановитьТекущийКаталог(ИмяКаталога);
СписокФайлов = FTPСоединение.НайтиФайлы("", "*.csv", истина);
Для каждого Файл из СписокФайлов Цикл
FTPСоединение.Удалить(Файл.Имя);
КонецЦикла;
FTPСоединение.Записать(ВременныйФайл,СокрЛП(ИмяКаталога+Путь));
Показатьвсё работает только проверяйте путь к файлу ( если он создается на сайте оставьте только номер наименование Документа ) и всё будет работать и если не sftp
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот