Имя: Пароль:
1C
1C 7.7
v7: Выгрузка по ftp
0 YDen
 
15.02.23
04:42
Здравствуйте.
Подскажите пожалуйста. Можно ли выгружать форму документа xls формата по ftp?

благодарю
1 YDen
 
15.02.23
04:46
Подробнее: формируется в 1с документ. Его нужно (печатную форму) выкладывать на сайте в xls формате. Для доступа к сайту используется ftp.
2 rphosts
 
15.02.23
04:48
Нет формы формата xls - есть файл формата xls. Файл можно сохранить а потом отправить на ftp
3 YDen
 
15.02.23
04:50
(2) Или так.
4 Андрюха
 
15.02.23
05:22
На ftp можно выгружать абсолютно любой файл, и xls, и xml, и exe...
5 YDen
 
15.02.23
05:35
(4) Не могу запрос к гуглу сделать. Все полностью базу как выгрузить предлагает.
6 vladmenleo
 
15.02.23
05:58
(0) Держи функцию
Функция ЗагрузитьНаФТП(База)
    ПутьКБазеПриЗагрузке = КаталогВременныхФайлов();
    WshShell = СоздатьОбъект("WScript.Shell");
    //подготавливаем файл с командами ftp
    ВременныйСкриптФайл = "InetFTP1.tmp";
    Т = СоздатьОбъект("Текст");
    //Т.ДобавитьСтроку("chcp 1251");
    Т.ДобавитьСтроку("open " + Сокрлп(База.АдресСервера));
    Т.ДобавитьСтроку(Сокрлп(База.Логин));
    Т.ДобавитьСтроку(Сокрлп(База.Пароль));
    Т.ДобавитьСтроку("prompt");
    Т.ДобавитьСтроку("binary");  
    Если База.ПассивныйРежим = 1 тогда
        Т.ДобавитьСтроку("literal pasv");  
    КонецЕсли;    
    Т.ДобавитьСтроку("cd " + Сокрлп(База.КаталогЗагрузки));
    Стр = "mput ";
    Для Ид = 1 По База.СписокФайлов.РазмерСписка() Цикл
        Стр = Стр + """" + База.СписокФайлов.ПолучитьЗначение(Ид) + """ ";
    КонецЦикла;
    Т.ДобавитьСтроку(Стр);
    Т.ДобавитьСтроку("quit");
    Т.Записать(ПутьКБазеПриЗагрузке + ВременныйСкриптФайл);
    
    Фс.УстТекКаталог(ПутьКБазеПриЗагрузке);
    Команда = "ftp -s:""" + ВременныйСкриптФайл + """>" + КаталогПользователя() + "report.txt"; // >ftp_in.log
    WshShell.Run("cmd /c " + Команда, 0, -1);
    Фс.УдалитьФайл(ПутьКБазеПриЗагрузке + ВременныйСкриптФайл);
    Для Ид = 1 По База.СписокФайлов.РазмерСписка() Цикл
        ТекФайл = База.СписокФайлов.ПолучитьЗначение(Ид);
        Если ФС.СуществуетФайл(ТекФайл) = 1 Тогда
            ФС.УдалитьФайл(ТекФайл);
        КонецЕсли;
    КонецЦикла;
КонецФункции // ЗагрузитьНаФТП
В параметр база передается структура с логином паролем, списком файлов и прочее
где-то нашел в инете, подправил под себя
7 vladmenleo
 
15.02.23
06:00
(6) + Вызывается примерно так
База = СоздатьОбъект("Структура");
    База.Вставить("АдресСервера", "192.168.0.100");
    База.Вставить("Логин", "логин");
    База.Вставить("Пароль", "пароль");
    База.Вставить("ПассивныйРежим", 1);
    База.Вставить("КаталогЗагрузки", "/каталог загрузки/");
    База.Вставить("СписокФайлов", СписокФайлов);
    Результат = ЗагрузитьНаФТП(База);
8 YDen
 
15.02.23
06:11
(7) Благодарю.
Удачи.
9 andrewalexk
 
15.02.23
06:37
(6) :) и как шел вместо кучи длл для фтп? не глючит?
10 vladmenleo
 
15.02.23
06:44
(9) работает хз скока лет - никаких проблем
11 Злопчинский
 
15.02.23
07:38
тоже аналогичным пользовался как в (6)
также пользовался и ncftp
12 Злопчинский
 
15.02.23
07:41
можно еще фтп примапить как сетевую папку и просто копировать туда
https://youtu.be/ZnnUpddkPnQ
13 АгентБезопасной Нацио
 
15.02.23
08:51
так была же штатная 1с-овская библиотека v7ftp (то-ли из бухии, то-ли из БГУ):
https://photos.app.goo.gl/YAn3QGgsXwmNjHQeA
14 Builder
 
15.02.23
09:20
Есть еще DialMail.dll, отлично работает с ftp.
15 АгентБезопасной Нацио
 
15.02.23
09:37
(14) у нее вроде какие-то проблемы были на новых виндах?
16 АгентБезопасной Нацио
 
15.02.23
09:39
(14) Но вообще, возможностей у нее действительно гораздо больше.
17 Kassern
 
15.02.23
09:43
(14) Есть еще хороший вариант WinSCP. Работает быстрее 1сшной штатной Новый FTP, еще умеет в sftp
18 andrewalexk
 
10.03.23
22:15
(17) :) кстати да есть пример кода если что