Заготовка для загрузки файлов по ftp

03.06.13

Интеграция - WEB-интеграция

3 процедуры и 1 макет

Кусок моей реализации обмена по ftp. Сначала получает список файлов на ftp, анализируется, загружали ли его ранее (некоторые ftp не позволяют удалять файлы), а потом загружаются новые файлы и сохраняются в хранилище файлов. Далее файлы обрабатываются (здесь этих процедур уже нет) и при удачной обработке помечаются уже как загруженные. Если файл пришел пустой или неполный (а с ftp такое бывает), то файл помечается как битый и в следующий сеанс обмена снока загружается уже штатно. Как-то так.

 Процедура ПолучитьФайлыЗаказовFTP() Экспорт

   
СоздатьКаталог(КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена);
   
ИмяЛогаFTP = КаталогВременныхФайлов()+"ftp1cList.log";
   
ВыполнитьНаFTP("Список файлов",,ИмяЛогаFTP);
   
СписокФайловНаFTP = СписокФайловДляПолученияFTP(ИмяЛогаFTP);
   
УдалитьФайлы(ИмяЛогаFTP);

    Если
СписокФайловНаFTP.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;

    Для Каждого
ИмяФайлаНаFTP из СписокФайловНаFTP Цикл //при желании можно добавить индикацию
       
ВыполнитьНаFTP("Получить файлы",ИмяФайлаНаFTP);
    КонецЦикла;
   
СписокФайлов = НайтиФайлы(КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена,"*.txt");

    Для Каждого
Файл из СписокФайлов Цикл
       
ХранилищеФайла = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
       
ХранилищеФайла.Объект = Контрагент;
       
ХранилищеФайла.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл;
       
ХранилищеФайла.ИмяФайла = Файл.Имя;
       
ХранилищеФайла.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя));
       
ХранилищеФайла.Наименование = "Заявка - не загружена";
        Попытка
           
ХранилищеФайла.Записать();
           
ВыполнитьНаFTP("Удалить файл",Файл.Имя);
           
УдалитьФайлы(КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена+"\" + Файл.Имя);
        Исключение
           
Сообщить("Не удалось записать в базу или удалить с ftp файл заказа "+Файл.Имя,СтатусСообщения.Важное);
        КонецПопытки;
    КонецЦикла;

КонецПроцедуры


//Файл лога нужен только для получения списка файлов на ftp
//Действие - далее в тексте процедуры видно какие значения может принимать и за что отвечает
//ИмяФайлов - строка, содержащая имя файла (может и несколько, только синтаксис ftp.exe не помню, а на практике лучше получать по одному)
//ФайлЛога - ну тут ясно
//П_Настройки - структура, которая хранится в глобальной переменной и заполняется ранее
Процедура ВыполнитьНаFTP(Действие,ИмяФайлов = "",ФайлЛога = "С:\ftp1c.log")

   
выбПорт = "";
   
П_Настройки.Свойство("Порт",выбПорт);
    Если Не
ЗначениеЗаполнено(выбПорт) Тогда
       
выбПорт = 21;
    КонецЕсли;

   
выбЛогин = "";
   
П_Настройки.Свойство("Логин",выбЛогин);

   
выбПароль = "";
   
П_Настройки.Свойство("Пароль",выбПароль);

   
выбСервер = П_Настройки.АдресОбмена;

   
выбПуть = "";
   
П_Настройки.Свойство("КаталогОбмена",выбПуть);

   
BatFile = Новый ТабличныйДокумент();

   
МакетФайла = ЭтотОбъект.ПолучитьМакет("bat_FTP");

   
ТекОбласть = МакетФайла.ПолучитьОбласть("ОбластьФайла");

   
ТекОбласть.Параметры.Адрес выбСервер+" "+выбПорт;
   
ТекОбласть.Параметры.Логин выбЛогин;
   
ТекОбласть.Параметры.Пароль выбПароль;
   
ТекОбласть.Параметры.Каталог выбПуть;
   
ТекОбласть.Параметры.ЛокальныйКаталог Символ(34)+КаталогВременныхФайлов()+П_Настройки.ПапкаОбмена+Символ(34);
    Если
Действие = "Получить файлы" Тогда
       
ТекОбласть.Параметры.Действие = "mget "+ИмяФайлов;
    ИначеЕсли
Действие = "Удалить файл" Тогда
       
ТекОбласть.Параметры.Действие = "del "+ИмяФайлов; //не всегда дает удалять с ftp
   
ИначеЕсли Действие = "Список файлов" Тогда
       
ТекОбласть.Параметры.Действие = "ls . " + Символ(34) + ФайлЛога + Символ(34);
       
//ТекОбласть.Параметры.ВыводВФайл =  " >>"+ФайлЛога;
   
КонецЕсли;

   
BatFile.Вывести(ТекОбласть);
   
ИмяBatФайла = КаталогВременныхФайлов()+"FTP_.bat";
   
BatFile.Записать(ИмяBatФайла,ТипФайлаТабличногоДокумента.ANSITXT);
   
WshShell=Новый ComОбъект("WScript.Shell");
   
КодВозвр=WshShell.Run("cmd /C " + Символ(34)+ ИмяBatФайла + Символ(34),0,-1);
   
УдалитьФайлы(ИмяBatФайла);

КонецПроцедуры

//Проверим список уже загруженных файлов, чтобы не загружать их снова
//ИмяЛогаFTP - список файлов раннее был получен с помощью батника (в другой процедуре) и помещен в этот файл.
Функция СписокФайловДляПолученияFTP(ИмяЛогаFTP)
   
Запрос = Новый Запрос();
   
Запрос.Текст = "ВЫБРАТЬ
                   |    ХранилищеДополнительнойИнформации.Ссылка
                   |ИЗ
                   |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                   |ГДЕ
                   |    ХранилищеДополнительнойИнформации.Объект = &Контрагент
                   |    И ХранилищеДополнительнойИнформации.ИмяФайла ПОДОБНО &ИмяФайла"
;
   
Запрос.УстановитьПараметр("Контрагент",Контрагент);
   
Лог = Новый ТекстовыйДокумент();
   
Лог.Прочитать(ИмяЛогаFTP);
   
ФайлыДляПолучения = Новый Массив();
    Для
НомерСтроки = 1 по Лог.КоличествоСтрок() Цикл
       
Строка = Лог.ПолучитьСтроку(НомерСтроки);
       
ИмяФайла = СтрЗаменить(Строка,"./","");
       
Запрос.УстановитьПараметр("ИмяФайла",ИмяФайла);
       
Результат = Запрос.Выполнить().Выбрать();
        Если
Результат.Следующий() Тогда
            Продолжить;
        КонецЕсли;
       
ФайлыДляПолучения.Добавить(Символ(34) + ИмяФайла + Символ(34));
    КонецЦикла;
    Возврат(
ФайлыДляПолучения);
КонецФункции

 

Макет тоже простой. Каждая строчка в отдельной строке. Надеюсь разберетесь, где параметр, а где шаблон?

 
@echo off
ftp -s:%0 [ФайлЛог]
goto done
open [Адрес]
Логин
Пароль
cd [Каталог]
binary
prompt
lcd [ЛокальныйКаталог]
Действие
bye
:done

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Перенос данных 1C Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

58000 руб.

04.08.2015    188835    455    306    

456

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    188962    363    291    

421

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    161577    975    321    

484

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

58000 руб.

15.04.2019    84830    228    179    

162

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    34669    258    64    

195

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    13750    16    8    

17

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Перенос данных из БП 2 в БП 3 готовые правила конвертации данных (КД 2), сэкономьте свое время! | Выполнить переход с БП 2 на БП 3 в ситуациях, когда простым обновлением перейти не получается | Переносится вся справочная информация, документы за выбранный период, а также начальные остатки на выбранную дату (то есть можно еще и свертку базы сделать при переносе) | Есть фильтр по организациям при выгрузке данных | Перенос можно проверить перед покупкой прямо на вашем сервере! Обращайтесь за проверкой!

50600 руб.

21.05.2019    58689    81    133    

73
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AnryMc 851 03.06.13 11:32 Сейчас в теме
"+" за анимацию, лично я ещё здесь вроде не видел...

Внимание привлекает!
2. anig99 2865 03.06.13 13:43 Сейчас в теме
(1) у меня ещё кот (живой) есть на одной обработке.
3. Algiz 23.10.13 22:38 Сейчас в теме
на заметку возьму
4. NAKIS 5 18.12.13 12:17 Сейчас в теме
Можно юзнуть для обмена данными между филиалами, а то менеджеры и бухи вечно жалуются на почту...
5. NAKIS 5 18.12.13 12:17 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация