Заготовка для загрузки файлов по 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

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

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

Обработка позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Есть фильтр по организации и множество других опциональных параметров выгрузки. Наши правила переноса в продаже с 2015 года, постоянно работаем над их развитием. Более 360 предприятий выполнили переход с использованием этого продукта. Оказываем техническую поддержку по всем вопросам проекта переноса данных из УПП 1.3.

50722 45650 руб.

04.08.2015    159265    363    266    

345

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    134590    718    291    

387

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20086    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2

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

Переносятся документы за выбранный период, нормативно-справочная информация и остатки по счетам бухгалтерского учета из программы "1С:БП 3.0" в "1С:УТ 11" или "1С:КА. 2" или "1С:ERP Управление предприятием, ред. 2".

50722 45650 руб.

31.10.2014    231085    124    326    

295

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    34031    80    57    

78

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

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

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    68191    176    136    

108

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9155    9    8    

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

Внимание привлекает!
2. anig99 2840 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 Сейчас в теме
Оставьте свое сообщение