1C8.3 внешняя компонента Native API, для работы с FTP — замена встроенному клиенту

1C8.3 внешняя компонента Native API FTP клиент работает быстрее встроенного + дополнительные функции + исходники

FTP клиент, писался как замена встроенному в 1С, и нестабильно работающему DialMail.

Библиотека проверялась на: 1С8.3.5, Windows 7 pro, Windows 10 pro.x64, Windows Server 2008 x64

ВК позволяет отслеживать ошибки при вызове любой функции и свойства.

За основу взята внешняя компонента NativeAPI на Lazarus/FreePascal 

Архив состоит из:

  • 1c83_FTP_Native_dll.chm — справка по компоненте
  • NativeFTP.zip — внешняя компонента

Выдержка из хелпа:

 

Свойства:

Подключен (Connected)
ТекущийКаталог (GetCurrentDirectory)
Ошибка (GetError)

 

Методы:

Подключиться (Connect)
Существует (Exists)
СоздатьКаталог (MakeDir)
УстановитьТекущийКаталог (SetCurrentDirectory)
Удалить (Delete)
Записать (Put)
Получить (Get)
НайтиФайлы (List)

 

Описание:

Предназначен для работы с файлами и каталогами на ftp-серверах.

 

КомпУст=Ложь;
Попытка
КомпУст=ПодключитьВнешнююКомпоненту("С:NativeFTP.dll","NativeFTP",AddInType.Native);

//второй вариант: КомпУст=ПодключитьВнешнююКомпоненту("С:NativeFTP.dll","NativeFTP",ТипВнешнейКомпоненты.Native);

//ещё вариант из макета: КомпУст=ПодключитьВнешнююКомпоненту("ОбщийМакет.Макет","NativeFTP",ТипВнешнейКомпоненты.Native); (в макете должен быть "dll" или специальный "zip")
Исключение
Сообщить("Произошла исключительная ошибка при подключении компоненты!",СтатусСообщения.Важное);
КонецПопытки;

Если Не КомпУст Тогда
Сообщить("Произошла ошибка при подключении компоненты!",СтатусСообщения.Важное);
КонецЕсли;

Об = Новый("AddIn.NativeFTP.ФТП");

//второй вариант: Об = Новый("AddIn.NativeFTP.FTP");

Об.Подключиться("192.168.0.1",21,"qwe","123",Истина);

 

 

27 Comments

  1. Diversus

    Не «Nativ API», а «Native API».

    Reply
  2. gortrex

    Спасибо, исправил!

    Reply
  3. IlyaPopko

    А какие доп. возможности есть? Например есть возможность удержания соединения (доп. таймаут)? или возможность докачки?

    Reply
  4. gortrex

    Доп возможности это: функция существует и свойство ошибка.

    Возможность докачки и удержания соединения можно доделать.

    Reply
  5. kuza_87

    Скачал. Спасибо. Не работает справка, нет описания методов.

    Reply
  6. kuza_87

    Извиняюсь за наезд. Открыл на другой машине справку — всё читается нормально.

    Reply
  7. KTo

    Добрый день. На платформе «8.3.5.1248» Не удалось завести. Ошибка на скрине.

    Reply
  8. gortrex

    (7) KTo, на 8.3.5.1625 толстый клиент, клиент-серверный вариант, работает!

    Подключать желательно через общий макет.

    Reply
  9. KTo

    На клиенте почему-то вдруг заработало) Но мне надо на сервере. Спасибо, сейчас попробую через макет.

    Через макет тоже не работает, может потому, что сервер 64 разрядный? Комментарий автора бы услышать. Может я что не так делаю?

    Reply
  10. KTo

    (8) блин) а вы ведь и есть автор?) Что скажете может быть дело в разрядности?

    Reply
  11. gortrex

    (10) KTo, Да дело в разрядности!

    позже попробую скомпилировать 64bit.

    Reply
  12. KTo

    (11) был бы очень признателен) Специально переписывал функционал для регламентных заданий и попал на такой вот сюрприз встроенного клиента. Пришлось искать скорей замену)

    Reply
  13. gortrex

    (12) KTo, Добавил NativeFTP_x64.dll, проверить не было времени.

    Попробуйте, может заработает!

    Reply
  14. KTo

    Жаль, но на сервере не работает компонента.

    Reply
  15. gortrex

    (14) KTo, Проверил у меня работает под х64 сервером!

    Reply
  16. gortrex

    Попробуйте загружать из файла: КомпУст=ПодключитьВнешнююКомпоненту(«C:\NativeFTP_x64.dll»,»NativeFTP»,ТипВнешнейКомпоненты.Native);

    И проверьте права на файл.

    Reply
  17. KTo

    (15) это радует) тогда еще покопаюсь, хотя, конечно, хотелось бы из макета) у нас тут распределенная база и получилось бы вообще круто)

    Reply
  18. KTo

    (16) спасибо тебе добрый человек за терпение) беру свои слова назад, это я забыл, что два дня назад перенес тестовую базу на другой сервер) Поэтому компонента была на одном сервере, а загружал ее с другого, так что из каталога все работает)

    Reply
  19. CheBurator

    А на 77 будет работать?

    Reply
  20. gortrex

    (19) CheBurator, Нет, не будет!

    Reply
  21. KTo

    Похоже нашел еще недочет. В процедуре Удалить() похоже меняется параметр, если туда передать доступный только для чтения реквизит, будет вызвано исключение. Надо делать через переменную, что-то вроде:

    Соединение.УстановитьТекущийКаталог(«/» + Папка)

    ВременноеИмяФайла = Файл.Имя;

    Соединение.Удалить(ВременноеИмяФайла);

    Reply
  22. gortrex

    (21) KTo, нет параметр не меняется, как получить ошибку написано в хелпе.

    Возможно не правильный параметр.

    Reply
  23. KTo

    (22) в ошибке написано «нет ошибок!», а в исключении «Поле объекта недоступно для записи», в моем примере это имя, объекта файл, которое только для чтения, из этого я сделал вывод что компонента его пытается изменить.

    Так же работа на сервере у нас почему-то нестабильна, несколько минут работает фоновое задание валится без всяких ошибок, и вот такая штука в журнале винды:

    Имя сбойного приложения: rphost.exe, версия: 8.3.5.1248, отметка времени: 0x5449531b

    Имя сбойного модуля: NativeFTP_x64.dll, версия: 0.0.0.0, отметка времени 0x00000000

    Код исключения: 0xc0000005

    Смещение ошибки: 0x00000000000c6ca8

    Идентификатор сбойного процесса: 0x9ae0

    Время запуска сбойного приложения: 0x01d133e050cdd59d

    Путь сбойного приложения: C:Program Files1cv88.3.5.1248in
    phost.exe

    Путь сбойного модуля: C:UsersSQLServiceAppDataLocalTempNativeFTP_x64.dll

    Код отчета: 1f6bbcef-9fd6-11e5-ab88-00155da38900

    Может у кого-то работает без сбоев?

    Reply
  24. gortrex

    (23) KTo, передавать можно только простые типы данных (строка, число…)

    Покажите кусок кода, где возникает ошибка!

    Reply
  25. v.l.

    Nativ — Native исправили.

    А в русский никто?

    «архив с инди (в нутри архива » — что такое «нутря архива», в которой находится «инструкция по установке в lazarus)»? ЧТо за технология в архивировании?

    Что такое «инди»?

    Reply
  26. gortrex

    Обновил файлы компоненты, исправлены ошибки.

    Добавлен «zip» файл внешней компоненты.

    Reply
  27. chemezov

    Для Андроида еще бы такую и Ios

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *