Всё чаще встречаются задачи по отправке отчетов поставщику, и нередко подготовленные файлы необходимо записать на FTP сервер. О том, как можно решить подобную задачу, и пойдёт речь.
Способ первый – внешняя компонента
На официальном сайте замечательной компании http://pro1c.org.ua/redirect.php?http://www.agentplus.ru/ в разделе http://pro1c.org.ua/redirect.php?http://www.agentplus.ru/downloads/ свободно доступны Конфигурации для 1С:Предприятие с интегрированным модулем обмена для "Агент Плюс: Мобильная торговля. Проф" среди которых Конфигурация "Агент Плюс. Торговля+Склад" (на базе типовой конфигурации "Торговля+Склад", редакция 9.2). В дистрибутиве конфигурации содержится внешняя компонента APPlus.dll и несколько дополнительных библиотек, дабы не мучать читателя подробностями – все они собраны в прикрепленном к статье архиве.
При помощи этой компоненты легко решается поставленная задача:
ЗагрузитьВнешнююКомпоненту("APPlus.dll"); // Регистрируем компоненту
ФТП = СоздатьОбъект("AddIn.CeDataExch"); // Создаём объект
ФТП.FtpOpenSession(); // Это я не знаю зачем:)
Результат = ФТП.FtpConnect("ftp.filehost.ru","userName","Password"); // Подключаемся
Если Результат = 0 Тогда // Если успешно то отправляем файл
Результат = ФТП.FtpPutFile(ИмяФайлаЛокально, ИмяФайлаНаФТП);
Если Результат <> 0 Тогда // не получилось - сообщаем об ошибке
Сообщить("Не удалось отправить файл по причине: " + ФТП.ErrDescription(Результат), "!");
КонецЕсли;
Иначе
Сообщить("Не удалось подключиться по причине: " + ФТП.ErrDescription(Результат), "!");
КонецЕсли;
ФТП.FtpCloseSession();
Текст = СоздатьОбъект("Текст"); // Создаём файл с командами для ftp
Текст.ДобавитьСтроку("open " + ФТПсервер);
Текст.ДобавитьСтроку(ФТПимяПользователя);
Текст.ДобавитьСтроку(ФТПпароль);
Текст.ДобавитьСтроку("put " + ИмяФайлаЛокально);
Текст.ДобавитьСтроку("quit");
Текст.Записать(КаталогИБ() + "ftpcmd.dat");
ФС.УстТекКаталог(КаталогИБ()); // место расположения ftpcmd.dat
КомандаСистемы("ftp -s:ftpcmd.dat"); // вызываем
ФС.УдалитьФайл(КаталогИБ() + "ftpcmd.dat"); // убираем за собой
"ftp -s:ftpcmd.dat > naprimer.log"
ФС.УстТекКаталог(КаталогИБ()); // место расположения curl.exe и её компонент
КомандаСистемы("curl.exe -T """+ИмяФайлаЛокально+""" -u "+ФТПимяПользователя+":"+ФТПпароль+" "+ФТПсервер); // вот и всё
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua