1С и ftp. Загрузка и выгрузка

1. Lenten 25 04.06.13 18:56 Сейчас в теме
Добрый день.

Пытаюсь скачать файлы с ftp ресурса

ИмяСервераFTP = "ТУТ СЕРВЕР";
	ИмяПользователяFTP = "пользователь";
	ПарольFTP = "пароль";
	порт = 21;	
	ТекущийКаталогFTP = "emission";
	
	Сервер = Новый FTPСоединение(СокрЛП(ИмяСервераFTP),порт, 
	СокрЛП(ИмяПользователяFTP), 
	СокрЛП(ПарольFTP),,Ложь);
	
	Попытка 
		Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);
	Исключение
	КонецПопытки;
		
	СписокФайлов = Сервер.НайтиФайлы("", "*.txt", истина);
 
	ПутьКПриходу = Константы.ПутьЗагрузка.Получить();
	
	КудаЗаписать      = СтрЗаменить(ПутьКПриходу,"\","/") + "/";
	
	Для каждого Файл из СписокФайлов Цикл
		
		Сервер.Получить(Файл.Имя,КудаЗаписать + Файл.Имя);
		
		
	КонецЦикла;
Показать


Сервер.НайтиФайлы файлы находит, но я не могу никак их скопировать.

В результате создаются пустые файлы в нужной мне папке, с теми же именами, что и на ftp. Никак не могу разобраться как все это работает.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DKiguin 05.06.13 01:46 Сейчас в теме
(1) Lenten, попробуй КопироватьФайл.
3. Lenten 25 05.06.13 10:16 Сейчас в теме
Нет такого метода для FTPСоединение . К сожалению
4. Sevens 6 05.06.13 10:38 Сейчас в теме
Попытка
  НашеСоединение = Новый FTPСоединение(Адрес, , Логин, Пароль , ,Истина );

	Исключение

	Сообщить("Ошибка создания соединения: "+ОписаниеОшибки());

	Возврат;

КонецПопытки;
 Массив =  НашеСоединение.НайтиФайлы("/", Настройки.ФайлНачинаетсяС+"*.*");
 Для каждого файл Из массив Цикл
  	НашеСоединение.Получить(Файл.ПолноеИмя, "C:\Import\"+"1.dbf");
КонецЦикла; 
Показать

У меня этот код отрабатывает корректно
5. kilo81 05.06.13 15:49 Сейчас в теме
Можно посмотреть в любой типовой конфе, в настройке обмена между узлами. Там этот механизм реализован. Там и поиск, и подключение.
6. Lenten 25 05.06.13 16:37 Сейчас в теме
Случилось самое печальное. Заработало на следующий день по неизвестной причине. Код не менял (
7. Lenten 25 05.06.13 18:56 Сейчас в теме
второй раунд секса с FTP

У меня получилось записать файл на ftp и скопировать от туда файл.

Но Сервер.Переместить(Файл.ПолноеИмя,КудаЗаписать + Файл.Имя) выдает ошибку Quote command returned error .

Т.е. при попытке удалить файл с ftp он ругается.

В интернетах пишут что удаление по неведомой причине происходит не из папки, которую я указываю (Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);), а из корня сервера ftp.

Может кто то знает как сразу подключиться к конкретной папке, без УстановитьТекущийКаталог ???
8. Lenten 25 05.06.13 19:49 Сейчас в теме
фуф. я не понимаю как эта штука работает.

Файлы удалить получилось с 20 раза. Вот что в результате я нарисовал

ИмяСервераFTP = "Тут сервер";
	ИмяПользователяFTP = "ИмяПользователя";
	ПарольFTP = "Пароль";
	порт = 21;	
	ТекущийКаталогFTP = "emission";
	
	Сервер = Новый FTPСоединение(СокрЛП(ИмяСервераFTP),порт, 
	СокрЛП(ИмяПользователяFTP), 
	СокрЛП(ПарольFTP),,);
	
	Попытка 
		Сервер.УстановитьТекущийКаталог(ТекущийКаталогFTP);//папка на ftp сервере в которую загружаем
	Исключение
	КонецПопытки;
		
	СписокФайлов = Сервер.НайтиФайлы("", "*.*", истина);
 
	ПутьКПриходу = Константы.ПутьЗагрузка.Получить();
	
	КудаЗаписать      = СтрЗаменить(ПутьКПриходу,"\","/") + "/";
	
	
	Для каждого Файл из СписокФайлов Цикл
		
		Сервер.Получить(Файл.Имя,КудаЗаписать + Файл.Имя);
		Сервер.Удалить(Файл.Имя);
				
	КонецЦикла;
Показать
9. PiotrLoginov 06.06.13 01:16 Сейчас в теме
(8) Спасибо что отписались когда получилось. Делает Вам честь.
SmArtist; +1 Ответить
12. Umix 131 12.05.17 13:41 Сейчас в теме
(8) Ваш способ не помог ((( т.к. был реализован.

История проста.
Был 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);
			КонецПопытки;		
		КонецЦикла;	
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;

	фтп = Неопределено;	
Показать


Заплатка сработала как надо
13. gladluter 17.12.18 13:37 Сейчас в теме
(8)

Столкнулся с такой же проблемой - и прав хватает и читается без проблем, а удалять не давало, по вашему примеру прошло.
Прочисал интернет, ответа не нашел, начал разбираться что пошло не так.
Оказалось что 1с не нормально восприняла символ ":" в имени файла (к примеру в файле "FileType_2018-12-11T15:09:20_DocNumber.xml"), она в таком случае обрезала имя до "FileType_2018-12-11T15".

Договорились не ставить разделитель по времени и все сразу заработало.

Может кому-то еще пригодиться.
10. Oktava 06.06.13 03:44 Сейчас в теме
Интересно нужно попробовать! Я в качестве FTP яндекс диск юзал там все ок
11. smirnova_a 14.06.16 14:03 Сейчас в теме
У нас был тот же косяк, оказалось, что не во все каталоги были права на запись.
14. kets-84@bk.ru 05.02.19 17:44 Сейчас в теме
АдресСайта = //"1.1.1.1" ;
		Порт = 21;
		Логин = "Логин";
		Пароль = "пароль";
		ИмяКаталога =  /"data/1c";
		FTPСоединение = Новый FTPСоединение(АдресСайта,Порт,Логин,Пароль);
		FTPСоединение.УстановитьТекущийКаталог(ИмяКаталога);
		СписокФайлов = FTPСоединение.НайтиФайлы("", "*.csv", истина);
		 Для каждого Файл из СписокФайлов Цикл
		FTPСоединение.Удалить(Файл.Имя);
		КонецЦикла;
		FTPСоединение.Записать(ВременныйФайл,СокрЛП(ИмяКаталога+Путь)); 
Показать

всё работает только проверяйте путь к файлу ( если он создается на сайте оставьте только номер наименование Документа ) и всё будет работать и если не sftp
15. jmidgard 13.02.19 14:42 Сейчас в теме
(14) Я вас правильно понял, это нужно поправить конфигурацию?
16. jmidgard 13.02.19 14:45 Сейчас в теме
(14) Я вас правильно понял, это нужно поправить конфигурацию?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот