helpf.pro
Регистрация

Как Выгрузить файлы и папки из каталога на FTP

Код 1C v 8.2 УП
 
Функция ВыгрузитьФайлыИПапкиНаFTP_Рекурсивно(Соединение, НачальныйКаталогВыгрузкиFTP, НачальнаяПапкаВыгрузкиКомп, ТекущаяПапка=Неопределено)
	Рез = Истина;
	Если ТекущаяПапка = Неопределено Тогда ТекущаяПапка = НачальнаяПапкаВыгрузкиКомп КонецЕсли; 
	МассивФайлов = НайтиФайлы(ТекущаяПапка, "*");
	ТекКаталог = СтрЗаменить(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(ТекущаяПапка, НачальнаяПапкаВыгрузкиКомп, ""), "\", "/"), "//", "/");
	Если Прав(ТекКаталог, 1) <> "/" Тогда
		ТекКаталог = ТекКаталог + "/";
	КонецЕсли;
	
	Для Каждого НайденныйФайл Из МассивФайлов Цикл
		Файл = Новый Файл(НайденныйФайл.ПолноеИмя);
		Если Файл.ЭтоКаталог() Тогда
			ЕстьТакаяПапка = Соединение.НайтиФайлы(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/"), НайденныйФайл.Имя).Количество() > 0;
			
			Если не ЕстьТакаяПапка Тогда
				НомерПопытки = 1;
				Успешно = Ложь;
				Пока НомерПопытки < 4 и не Успешно Цикл
					Попытка
					Соединение.УстановитьТекущийКаталог(ТекКаталог);
						Успешно = Истина;
					Исключение
						Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
						НомерПопытки = НомерПопытки + 1;
					КонецПопытки;
				КонецЦикла;
				Если Не Успешно Тогда
					Возврат Ложь;
				КонецЕсли;
				
				НомерПопытки = 1;
				Успешно = Ложь;
				Пока НомерПопытки < 4 и не Успешно Цикл
					Попытка
						Соединение.СоздатьКаталог(НайденныйФайл.Имя);
						Успешно = Истина;
					Исключение
						Сообщить("Попытка №" + НомерПопытки + ", каталог " + НайденныйФайл.Имя + " - " + ОписаниеОшибки());
						НомерПопытки = НомерПопытки + 1;
					КонецПопытки;
				КонецЦикла;
				
				Если Не Успешно Тогда
					Возврат Ложь;
				КонецЕсли;
				
				
			КонецЕсли;
			
			НомерПопытки = 1;
			Успешно = Ложь;
			Пока НомерПопытки < 4 и не Успешно Цикл
				Попытка
					Соединение.УстановитьТекущийКаталог(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.ПолноеИмя, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/") + "/");
					Успешно = Истина;
				Исключение
					Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
					НомерПопытки = НомерПопытки + 1;
				КонецПопытки;
			КонецЦикла;
			Если Не Успешно Тогда
				Возврат Ложь;
			КонецЕсли;
			
			ВыгрузитьФайлыИПапкиНаFTP_Рекурсивно(Соединение, НачальныйКаталогВыгрузкиFTP, НачальнаяПапкаВыгрузкиКомп, НайденныйФайл.ПолноеИмя);

			Если не Рез Тогда
				Возврат Ложь;
			КонецЕсли;
			
		Иначе
			НомерПопытки = 1;
			Успешно = Ложь;
			Пока НомерПопытки < 4 и не Успешно Цикл
				Попытка
					Соединение.УстановитьТекущийКаталог(ТекКаталог);
					Успешно = Истина;
				Исключение
					Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
					НомерПопытки = НомерПопытки + 1;
				КонецПопытки;
			КонецЦикла;
			Если Не Успешно Тогда
				Возврат Ложь;
			КонецЕсли;
		
			
			
			// почему-то иногда при большой выгрузке глюкает ((
			// а со второй попытки выкладывается.... странно...
			НомерПопытки = 1;
			Успешно = Ложь;
			Пока НомерПопытки < 4 и не Успешно Цикл
				Попытка
					Соединение.Записать(НайденныйФайл.ПолноеИмя, НайденныйФайл.Имя);
					Успешно = Истина;
				Исключение
					Сообщить("Попытка №" + НомерПопытки + ", файл " + НайденныйФайл.ПолноеИмя + " - " + ОписаниеОшибки());
					НомерПопытки = НомерПопытки + 1;
				КонецПопытки;
			КонецЦикла;
			
			Если Не Успешно Тогда
				Возврат Ложь;
			КонецЕсли;
			
			#Если Клиент Тогда
				Состояние("Выгрузка файла: " + НайденныйФайл.ПолноеИмя);
			#КонецЕсли
			
		КонецЕсли;
	КонецЦикла;
	
	Возврат Рез;
	
КонецФункции


// ПРИМЕР обращения к функции
КаталогиДляПередачиНаFTP = Новый Соответствие;
// цикл и в нем
КаталогиДляПередачиНаFTP.Вставить(СсылкаНаЭлементСправочника);
// Конец цикла

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


Как загрузить файлы с FTP
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 23827
 +2 
Распечатать
Возможно, вас также заинтересует
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
ZIP-архив Разделить и Объединить Файл 0
При работе с большими объемами данных могут возникнуть проблемы при пересылке архивных файлов. Типичной такой ситуацией является ограничение некоторых почтовых серверов на размер сообщения - если письмо превышает некий заранее установленный размер, о
ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За
ZIP-архив Чтение 1
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!