Возникла необходимость в оперативном режиме получать сведения о платежах через ЕРИП (Единое расчетное информационное пространство). Т.к. являюсь программистом старой закалки (DOS и FoxPro), то изначально решил реализовать эту проблему с помощью BAT-ника, но XXI век и 64-разрядные Windows-ы вынуждая предостеречь «старичков» и обогатить знаниями «новичков» решил поделиться свои опытом и опубликовать простое и лаконичное решение по приему файлов с FTP-сервера.
Из кода программы будет понятно предназначение функции FTPСоединение() и логика обмена информацией.
Все банально просто – файлы с FTP-сервера копируются во временную папку C:\TMP, а дальше по своему усмотрению можно делать с ними все что угодно. Но для подстраховки создаются резервные копии принимаемых файлов out/bak/.
Процедура ОсновныеДействияФормыЗагрузки(Кнопка)
Попытка
FTPКаталогИсточник="out/";
КаталогПриемник = "C:\TMP\";
IPCервера="10.10.10.10";
Порт=21;
Пользователь="user";
Пароль="pass";
Соединение = Новый FTPСоединение(IPCервера,Порт,Пользователь,Пароль, ,Ложь);
Массив = Соединение.НайтиФайлы(FTPКаталогИсточник, "*.*");
Если Не Массив.Количество() = 0 Тогда
Для Каждого Стр Из Массив Цикл
ФайлНаДиске = Новый Файл(КаталогПриемник+Стр.Имя);
ИмяФайла = КаталогПриемник+Стр.Имя;
Соединение.Получить(Стр.ПолноеИмя, ИмяФайла);
Если ФайлНаДиске.Существует() Тогда // Файл принят
Сообщить("Принят файл "+ФайлНаДиске.ПолноеИмя);
// Перемещаем полученный файл в каталог резервных копий на FTP-сервере
FTPФайлРезернойКопии=FTPКаталогИсточник+"bak/"+Стр.Имя;
Соединение.Переместить(FTPКаталогИсточник+Стр.Имя,FTPФайлРезернойКопии);
КопияФайла = Соединение.НайтиФайлы(FTPФайлРезернойКопии);
Если КопияФайла.Количество()=0 Тогда
Сообщить("Резервная копия "+FTPФайлРезернойКопии+ " не создана!!!");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Сообщить("Нет файлов!");
КонецЕсли;
Исключение
Сообщить("Ошибка подключения FTP!!!");
КонецПопытки;
Сообщить("--------------------------------------------------------");
КонецПроцедуры