Имя: Пароль:
1C
1C 7.7
v7: Подключение в сайту через ftp
0 VBMADD
 
18.09.14
15:35
Привет братьям по разуму!
Знающие подскажите пож-ст про ftp-соединение
Хотел на сайт по ftp-соединению забросить файлик
написал код

    //подготавливаем файл с командами ftp
    ВременныйСкриптФайл="InetFTP.tmp";
    Т=СоздатьОбъект("Текст");
    Т.ДобавитьСтроку("open "+Сокрлп(адрес_фтп));
    Т.ДобавитьСтроку(Сокрлп(логин));
    Т.ДобавитьСтроку(Сокрлп(пароль));
    Т.ДобавитьСтроку("prompt");
    Т.ДобавитьСтроку("binary");
    Т.ДобавитьСтроку("quote pasv");
    
    Т.ДобавитьСтроку("cd "+Сокрлп("webspace"));
    Т.ДобавитьСтроку("cd "+Сокрлп("httpdocs"));
    Т.ДобавитьСтроку("cd "+Сокрлп("cantusmusic.ru"));
    Т.ДобавитьСтроку("cd "+Сокрлп("download"));
        Т.ДобавитьСтроку("quote PASV"); //переход в пассивный режим
        Т.ДобавитьСтроку("put flag.mod"); //посылаем проверочный флаг
    Т.ДобавитьСтроку("mput *.mod");//get
    Т.ДобавитьСтроку("mput "+файлик);//get
    Т.ДобавитьСтроку("get flag.mod flag2.mod");//считываем - его
    Т.ДобавитьСтроку("put flag2.mod");
    Т.ДобавитьСтроку("quit");//выход
    Т.Записать(путь_к_файлу+"\"+ВременныйСкриптФайл);
    ФайлФлага=путь_к_файлу+"\flag.mod";
    ФайлФлага2=путь_к_файлу+"\flag2.mod";
    Т=СоздатьОбъект("Текст");
    Т.ДобавитьСтроку("=Проверка связи=");
    Т.Записать(ФайлФлага);
    Если ФС.СУществуетФайл(ФайлФлага2)=1 Тогда
        ФС.УдалитьФайл(ФайлФлага2);
    КонецЕсли;
    Фс.УстТекКаталог(путь_к_файлу);
    Команда="ftp -s:"""+ВременныйСкриптФайл+""">ftp_out.log";
    КомандаСистемы(Команда);
    Фс.УдалитьФайл(путь_к_файлу+"\"+ВременныйСкриптФайл);
    Рез=ФС.СУществуетФайл(ФайлФлага2); //если файл существует, то соединение было успешное
    ФС.УстТекКаталог(КаталогИБ());
    Если Рез=1 Тогда
        Сообщить("Передача данных на ftp-сервер успешно завершена");
    Иначе  
        Сообщить("Ниче не отправилось, Ахтунг!!!!!");
    КонецЕсли;  
КонецПроцедуры

Вроде бы все срабатывает, но файл на сайт чета не записывается.
Выдает вот такой лог-файл:
//=============================
230 User f121619 logged in
ftp> Интерактивный режим Выкл.
ftp> prompt
binary
200 Type set to I
ftp> quote pasv
227 Entering Passive Mode (109,120,162,1,255,59).
ftp> cd webspace
250 CWD command successful
ftp> cd httpdocs
250 CWD command successful
ftp> cd cantusmusic.ru
250 CWD command successful
ftp> cd download
250 CWD command successful
ftp> quote PASV
227 Entering Passive Mode (109,120,162,1,236,39).
ftp> put flag.mod
200 PORT command successful
ftp> Нет связи.
ftp> mput *.mod
Нет связи.
ftp> mput C:\1C_Base\dima\export.csv
Нет связи.
ftp> get flag.mod flag2.mod
Нет связи.
ftp> put flag2.mod
quit
//============================

Помогите крестьянину разобраться где собака порылась, оч надо...

Спасибо всем, кто откликнулся.
1 1Сергей
 
18.09.14
15:38
убери quote PASV
2 Defender aka LINN
 
18.09.14
15:44
(0) А для нахрена такой изврат, чем FTPСоединение не угодило?
3 Балоун
 
18.09.14
15:44
>"Ниче не отправилось, Ахтунг!!!!!"
эк ты ласково юзера зовёшь
4 VBMADD
 
18.09.14
15:47
(1) Убрал - ни че не изменилось!
(2) Подскажи как надо сделать, впервые с этим столкнулся...
5 VBMADD
 
18.09.14
15:50
опять пишет что нет связи, а через FAR->FTP-Соединение все копируется...
230 User f121619 logged in
ftp> Интерактивный режим Выкл.
ftp> prompt
binary
200 Type set to I
ftp> cd webspace
250 CWD command successful
ftp> cd httpdocs
250 CWD command successful
ftp> cd cantusmusic.ru
250 CWD command successful
ftp> cd download
250 CWD command successful
ftp> put flag.mod
200 PORT command successful
ftp> Нет связи.
ftp> mput C:\1C_Base\dima\export.csv
Нет связи.
ftp> get flag.mod flag2.mod
Нет связи.
ftp> put flag2.mod
quit
6 VBMADD
 
18.09.14
16:10
(2) Где почитать про FTPСоединение для 1сV77?
7 Jaffar
 
18.09.14
16:21
8 Злопчинский
 
18.09.14
18:21
//****************************************************************************************************************************
    //БЛОК ВЫГРУЗКИ НА ФТП *******************************************************************************************************
    //****************************************************************************************************************************
    ТекстВыгрузки = СоздатьОбъект("Текст");
//[*]progadmin, 18.03.2014, ДОБАВЛЕНО НЕТИПОВОЕ
//    ТекстВыгрузки.ДобавитьСтроку("open " + "ftp.money.net");
// -------------
    ТекстВыгрузки.ДобавитьСтроку("open 10.0.0.1");
//[*]_progadmin, 18.03.2014, ДОБАВЛЕНО НЕТИПОВОЕ
    ТекстВыгрузки.ДобавитьСтроку("тутлогинфтп");
    ТекстВыгрузки.ДобавитьСтроку("тутпарольфтп");
    //ТекстВыгрузки.ДобавитьСтроку("cd office");
    ТекстВыгрузки.ДобавитьСтроку("put " + КаталогПользователя() + ИмяПрайса);
    ТекстВыгрузки.ДобавитьСтроку("bye");
    ТекстВыгрузки.Записать(КаталогПользователя() + "ftp.txt");
    ТекстВыгрузки = "";
    
    КомандаСистемы("ftp -s:" + КаталогПользователя() + "Ftp.txt>> " + (КаталогПользователя() + "report.txt"));
    ФС.УдалитьФайл(КаталогПользователя() + "ftp.txt");
    
    ТекстВыгрузки = СоздатьОбъект("Текст");
    ТекстВыгрузки.Открыть(КаталогПользователя() + "report.txt");
    КС = ТекстВыгрузки.КоличествоСтрок()-4; //если все нормально - то в этой строке файла должно быть соотв.сообщение
                                            //проверим его
    Попытка
        строкаКомплете = ТекстВыгрузки.ПолучитьСтроку(КС);
        Если  Найти(Нрег(строкаКомплете),"226 transfer complete") = 0
        Тогда а=1; а=а/0;
        КонецЕсли;
        тПротокол = ТекущееВремя()+" файл данных успешно отправлен на сервер интернет-магазина"+РазделительСтрок+тПротокол;
        Форма.Обновить();
        ТекстВыгрузки = "";
    Исключение
        тПротокол = ТекущееВремя()+" ПРОИЗОШЛА ОШИБКА ВО ВРЕМЯ ЗАГРУЗКИ СФОРМИРОВАННОГО ФАЙЛА НА СЕРВЕР ИНЕТРНЕТ-МАГАЗИНА"+РазделительСтрок+тПротокол;

            ТемаПисьма      = "10.0.0.1 (ftp.money.net) ОШИБКА ВЫГРУЗКИ ПРАЙСА НА FTP-СЕРВЕР";
            ТелоПисьма      = ""+ТекущаяДата()+" "+ТекущееВремя()+"
            |ООО РогаИкопыта (Буратино)
            |ПРОИЗОШЛА ОШИБКА ВО ВРЕМЯ ЗАГРУЗКИ СФОРМИРОВАННОГО ФАЙЛА НА FTP-СЕРВЕР ИНЕТРНЕТ-МАГАЗИНА 10.0.0.1 (ftp.money.net)
            |ПРОТОКОЛ ВО ВЛОЖЕНИИ.
            |
            |------------------------------------------------------
            |робот IT-отдела
            |ООО РОГАИКОПЫТА";
            
            Адресат = "*****@yandex.ru, ****@*****.ru, it@******.ru";
            
            СписокФайлов = КаталогПользователя() + "report.txt";
            Параметры = СоздатьОбъект("СписокЗначений");
            Параметры.ДобавитьЗначение(ТемаПисьма                ,"ТЕМА");
            Параметры.ДобавитьЗначение(ТелоПисьма                ,"ТЕЛО");
            Параметры.ДобавитьЗначение(Адресат                    ,"КОМУ");
            Параметры.ДобавитьЗначение(СписокФайлов                ,"ФАЙЛ");
            Параметры.ДобавитьЗначение(0                        ,"ZIP");
            Параметры.ДобавитьЗначение(1                        ,"НЕМЕДЛЕННАЯОТПРАВКА");
            ОткрытьФорму("Отчет",Параметры,КаталогИБ()+"ExtForms\БВК_ЕМАЙЛ_СиДиОу.ert");
        Форма.Обновить();

        тПротокол = ТекущееВремя()+" ОТЧЕТ ОБ ОШИБКЕ ОТПРАВЛЕН "+Адресат+РазделительСтрок+тПротокол;        
        ТекстВыгрузки.Показать();
        ТекстВыгрузки = "";
    КонецПопытки;    
    
    ФС.УдалитьФайл(КаталогПользователя() + ИмяПрайса);
    ФС.УдалитьФайл(КаталогПользователя() + "report.txt");
    //****************************************************************************************************************************
    //БЛОК ВЫГРУЗКИ НА ФТП *******************************************************************************************************
    //****************************************************************************************************************************
.
тПротокол - многострочнаый текст на форме
9 vcv
 
18.09.14
21:10
Штатный виндовый ftp.exe пасивный режим не поддерживает. quote pasv отправляет команду серверу, тот отвечает, что всё ОК, но клиент-то всё равно пассив не поддерживает.
10 Злопчинский
 
18.09.14
21:17
можно еще ncftp заюзать - аналог ftp.exe - только с кучей допплюшек
11 lavalit
 
19.09.14
10:08
А извиняюсяя ... Shell использовать?
Примерно вот так
        Шел=СоздатьОбъект("shell.application");
        //Шел.Open("c:\");    // умеет открывать проводник
        РесурсФТП ="ftp://"; + СокрЛП(ФТП_Пользователь) + ":" + СокрЛП(ФТП_Пароль) + "@" + СокрЛП(ФТП_УРЛ) + "/" +?(ПустаяСтрока(СокрЛП(ФТП_ПутьВходящих))=0,СокрЛП(ФТП_ПутьВходящих) + "/" ,"")+ ДопКаталог;
        
        ПапкаФТП         = Шел.namespace(РесурсФТП);

        ПапкаПриемник    = Шел.namespace(СокрЛП(Каталог));      //возвращает агрегат каталога
        ПапкаЗагруженных = Шел.namespace(СокрЛП(Каталог));
        Предупреждение("Подключение к FTP серверу...",1);
        КоллекцияФайлов    = ПапкаФТП.items();
        РазмерИсходника    = КоллекцияФайлов.count;
        РазмерПриемникаНач = ПапкаПриемник.items().count;
        РазмерПриемникаКон = РазмерИсходника+РазмерПриемникаНач;
        Темы=ПапкаФТП.items();
        //ПапкаЗагруженных.copyhere(Темы);// копирование файлов
        //Темы.filter(64,"*.txt");// ну если надо вдруг отфильтровать                            
        ПапкаПриемник.movehere(Темы); // перенос файлов
12 lavalit
 
19.09.14
10:30
Здесь конечно скачивание с фтп, но так же и закачка делается
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс