helpf.pro
Регистрация
 +1 
Распечатать

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

В начало функции ВыгрузитьФайлыИПапкиНаFTP_Рекурсивно, я бы добавил еще несколько строк для универсальности

Код 1C v 8.2 УП
 Если Прав(НачальныйКаталогВыгрузкиFTP, 1) <> "/" Тогда
НачальныйКаталогВыгрузкиFTP = НачальныйКаталогВыгрузкиFTP + "/";
КонецЕсли;


Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.