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

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    145868    852    299    

440

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

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.21.x).

35000 руб.

23.07.2020    56330    258    73    

213

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    170851    361    283    

392

SALE! 10%

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

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

55778 50200 руб.

15.04.2019    74369    199    156    

137

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    38418    108    70    

102

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

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

35000 руб.

15.12.2021    26225    187    56    

143

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2915    3    0    

11

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    34991    69    45    

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

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