Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 09:49

УНФ выгрузка на ftp-сервер.

Автор mspuz, 13 янв 2019, 14:28

0 Пользователей и 1 гость просматривают эту тему.

mspuz

Добрый день. Вопрос - в стандартной выгрузке 1С на сайт есть выбор или в каталог или на сайт. А возможно ли организовать выгрузку на FTP-сервер? Конфигурация УНФ 1.6.

AIFrame

Механизмы FTP платформы убоги и ужасны. Категорически не рекомендую их юзать.
Лучше создавай ком-объект на winscp.
Добавлено: 13 янв 2019, 16:49


Процедура COM_ВыгрузитьНаFTP(КаталогВыгрузкиНаFTP, subdir="", МаскаФайловВыгрузки = "*.xml", ОчищатьFTPПередЗагрузкой = Истина)
session = ПолучитьОбъектSession();
Если session = неопределено Тогда
Возврат;
КонецЕсли;

Если COM_ВыгрузитьXML_Sync(session, КаталогВыгрузкиНаFTP, subdir) Тогда
Лог(" --- Выгрузка завершена успешно.");
Иначе
Лог(" !!! Выгрузка завершена с ошибками.");
КонецЕсли;

session.Dispose();

КонецПроцедуры

Функция COM_ВыгрузитьXML_Sync(session, КаталогВыгрузкиНаFTP, subdir)
БезОшибок = Истина;
#Если Клиент Тогда
Состояние("Выгружаем XML на FTP. [Synchronization in progress...]");
#КонецЕсли
Попытка
        ПутьВыгрузки = КаталогВыгрузкиНаFTP + "\" + ?(НЕ ПустаяСтрока(subdir), subdir + "\", "");
        ПутьЗагрузкиНаФТП = КаталогXMLнаFTP + ?(НЕ ПустаяСтрока(subdir), subdir + "/", "");
//SynchronizationMode mode: 0 - local, 1 - remote, , 2 - both
//SynchronizationCriteria criteria: 0 - None, 1 - Time, 2 - Size, 3 - Either
//
//Public Function SynchronizeDirectories(
//    mode As SynchronizationMode,
//    localPath As String,
//    remotePath As String,
//    removeFiles As Boolean,
//    Optional mirror As Boolean = False,
//    Optional criteria As SynchronizationCriteria = 1,
//    Optional options As TransferOptions = Nothing
//) As SynchronizationResult
transferResult = session.SynchronizeDirectories(1, ПутьВыгрузки, ПутьЗагрузкиНаФТП,
True, False);
        transferResult.Check();
Лог(" > Выгружено файлов: " + transferResult.Uploads.Count);
Лог(" > Удалено файлов: " + transferResult.Removals.Count);
Лог(" > Ошибок: " + transferResult.Failures.Count);
Исключение
БезОшибок = Ложь;
        Лог(" >>> Ошибка выгрузки: " + Символы.ПС + " <<< " + ОписаниеОшибки());
КонецПопытки;

Возврат БезОшибок;
КонецФункции

Функция ПолучитьОбъектSession()
#Если Клиент Тогда
Состояние("Устанавливаем соединение...");
#КонецЕсли
Попытка
//Задаем параметры подключения
sessionOptions = Новый COMОбъект("WinSCP.SessionOptions"); //Создаем объект SessionOptions
sessionOptions.Protocol = 2; // FTP
//Sftp = 0,
//Scp = 1,
//Ftp = 2,
//Webdav = 3,
sessionOptions.HostName = FTP_Address;
sessionOptions.PortNumber = 21;
sessionOptions.UserName = FTP_User;
sessionOptions.Password = FTP_Password;

session = Новый COMОбъект("WinSCP.Session"); //Создаем объект Session
//TimeSpan Timeout
// default = 1 min

//на всякий случай
        session.ExecutablePath = "C:\Program Files (x86)\WinSCP\winscp.exe";
// Подключаемся
session.Open(sessionOptions);
Возврат session;
    Исключение
        Лог(" >>> Ошибка соединения: " + Символы.ПС + " <<< " + ОписаниеОшибки());;
ЗавершитьЛог();
Возврат неопределено;
КонецПопытки;
КонецФункции


На тебе пример.

mspuz

AIFrame, Уау, огромное спасибо!!!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск