G
gorlanovmax
Возникла необходимость из 1с загружать файл DBF на произвольный ftp-сервер. Подскажите какими способами это лучше сделать??
Заранее спасибо
Заранее спасибо
Ищи DialMail.dll - самая нормальная компонента для работы с FTP
Или, попроще - юзай виндовый ftp.exe
А Гугл покурить религия не позволяет?
Первая же ссылка:
_http://www.dialmail.froggy.ru/
Вообще 8-ка обладает встроенными средствами для общения с FTP, HTTP, e-mail: НТТРСоединение, FTРСоединение и, вроде бы, электронная почта . Правда что то не все из них мне удавалось заставить работать, однако, люди знающие с форумов говорили о корректной работе. Видать руки у меня кривые.
//_____________________________________________________________________________
процедура proВыгрузкаФТП(сзФТР) Экспорт
АдресСервера = сзФТР.Получить("АдресСервера");
Логин = сзФТР.Получить("Логин");
Пароль = сзФТР.Получить("Пароль");
ЛокальнаяПапка = сзФТР.Получить("ЛокальнаяПапка");
КаталогЗВ = сзФТР.Получить("КаталогЗВ");
файлвыгрузи = сзФТР.Получить("файлвыгрузи");
проблФТП = 0;
//подготавливаем файл с командами ftp
ВременныйСкриптФайл="InetFTP.tmp";
Т=СоздатьОбъект("Текст");
Т.ДобавитьСтроку("open "+Сокрлп(АдресСервера));
Т.ДобавитьСтроку(Сокрлп(Логин));
Т.ДобавитьСтроку(Сокрлп(Пароль));
Т.ДобавитьСтроку("prompt");
Т.ДобавитьСтроку("binary");
КаталогВыгрузкиФТП=СтрЗаменить(Сокрлп(КаталогЗВ),"\","/");
Для А=1 По СтрЧислоВхождений(КаталогВыгрузкиФТП,"/") Цикл
Рез=Найти(КаталогВыгрузкиФТП,"/");
ПодКаталогФТП=ЛЕВ(КаталогВыгрузкиФТП,Рез-1);
Если ПустоеЗначение(ПодКаталогФТП)=0 Тогда
Т.ДобавитьСтроку("cd "+ПодКаталогФТП);
КонецЕсли;
КаталогВыгрузкиФТП=Сред(КаталогВыгрузкиФТП,Рез+1);
КонецЦикла;
Если ПустоеЗначение(КаталогВыгрузкиФТП)=0 Тогда
Т.ДобавитьСтроку("cd "+КаталогВыгрузкиФТП);
КонецЕсли;
Т.ДобавитьСтроку("mput "+СокрЛП(файлвыгрузи));//get
Т.ДобавитьСтроку("quit");//выход
Т.Записать(СокрЛП(ЛокальнаяПапка)+"\"+ВременныйСкриптФайл);
Фс.УстТекКаталог(СокрЛП(ЛокальнаяПапка));
Команда="ftp -s:"""+ВременныйСкриптФайл+""">ftp_out.log";
КомандаСистемы(Команда);
Фс.УдалитьФайл(СокрЛП(ЛокальнаяПапка)+"\"+ВременныйСкриптФайл);
Фс.УдалитьФайл(файлвыгрузи);
Конецпроцедуры
//******************************************************************************
// proЗагрузитьФТР(спЗнач)
//
// Параметры:
// сзФТР
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура proЗагрузитьФТР(сзФТР) Экспорт
АдресСервера = сзФТР.Получить("АдресСервера");
Логин = сзФТР.Получить("Логин");
Пароль = сзФТР.Получить("Пароль");
ЛокальнаяПапка = сзФТР.Получить("ЛокальнаяПапка");
КаталогЗВ = сзФТР.Получить("КаталогЗВ");
файлЗагрузки = сзФТР.Получить("файлЗагрузки");
//подготавливаем файл с командами ftp
ВременныйСкриптФайл="InetFTP.tmp";
Т=СоздатьОбъект("Текст");
Т.ДобавитьСтроку("open "+Сокрлп(АдресСервера));
Т.ДобавитьСтроку(Сокрлп(Логин));
Т.ДобавитьСтроку(Сокрлп(Пароль));
Т.ДобавитьСтроку("prompt");
Т.ДобавитьСтроку("binary");
КаталогЗагрузкиФТП=СтрЗаменить(Сокрлп(КаталогЗВ),"\","/");
Для А=1 По СтрЧислоВхождений(КаталогЗагрузкиФТП,"/") Цикл
Рез=Найти(КаталогЗагрузкиФТП,"/");
ПодКаталогФТП=ЛЕВ(КаталогЗагрузкиФТП,Рез-1);
Если ПустоеЗначение(ПодКаталогФТП)=0 Тогда
Т.ДобавитьСтроку("cd "+ПодКаталогФТП);
КонецЕсли;
КаталогЗагрузкиФТП=Сред(КаталогЗагрузкиФТП,Рез+1);
КонецЦикла;
Если ПустоеЗначение(КаталогЗагрузкиФТП)=0 Тогда
Т.ДобавитьСтроку("cd "+КаталогЗагрузкиФТП);
КонецЕсли;
Т.ДобавитьСтроку("mget "+СокрЛП(файлЗагрузки));
Т.ДобавитьСтроку("quit");//выход
Т.Записать(СокрЛП(ЛокальнаяПапка)+"\"+ВременныйСкриптФайл);
Фс.УстТекКаталог(СокрЛП(ЛокальнаяПапка));
Команда="ftp -s:"""+ВременныйСкриптФайл+""">ftp_in.log";
КомандаСистемы(Команда);
ВременныйСкриптФайл="InetFTP.tmp";
Т=СоздатьОбъект("Текст");
Т.ДобавитьСтроку("open "+Сокрлп(АдресСервера));
Т.ДобавитьСтроку(Сокрлп(Логин));
Т.ДобавитьСтроку(Сокрлп(Пароль));
Т.ДобавитьСтроку("prompt");
Т.ДобавитьСтроку("binary");
КаталогЗагрузкиФТП=СтрЗаменить(Сокрлп(КаталогЗВ),"\","/");
Для А=1 По СтрЧислоВхождений(КаталогЗагрузкиФТП,"/") Цикл
Рез=Найти(КаталогЗагрузкиФТП,"/");
ПодКаталогФТП=ЛЕВ(КаталогЗагрузкиФТП,Рез-1);
Если ПустоеЗначение(ПодКаталогФТП)=0 Тогда
Т.ДобавитьСтроку("cd "+ПодКаталогФТП);
КонецЕсли;
КаталогЗагрузкиФТП=Сред(КаталогЗагрузкиФТП,Рез+1);
КонецЦикла;
Если ПустоеЗначение(КаталогЗагрузкиФТП)=0 Тогда
Т.ДобавитьСтроку("cd "+КаталогЗагрузкиФТП);
КонецЕсли;
Т.ДобавитьСтроку("mdelete "+СокрЛП(файлЗагрузки));
Т.ДобавитьСтроку("quit");//выход
Т.Записать(СокрЛП(ЛокальнаяПапка)+"\"+ВременныйСкриптФайл);
Команда="ftp -s:"""+ВременныйСкриптФайл+""">ftp_del.log";
КомандаСистемы(Команда);
Фс.УдалитьФайл(СокрЛП(ЛокальнаяПапка)+"\"+ВременныйСкриптФайл);
КонецПроцедуры // proЗагрузитьФТР()
Я так думаю, что если не ставить (с), то все написанное как раз и является моим мнением.не забывайте добавлять imho
Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab