gifts2017

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

Опубликовал Антон Егоров (gortrex) в раздел Программирование - Внешние компоненты

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 

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

  • source - папка с исходником
  • 1c83_FTP_Native_dll.chm - справка по компоненте
  • NativeFTP.dll - внешняя компонента
  • NativeFTP_x64.dll - внешняя компонента x64, для подключения на сервере
  • indy-10.2.0.3.zip - архив с инди (в нутри архива инструкция по установке в lazarus)

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

 

Свойства:

Подключен (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",Истина);


 

Скачать файлы

Наименование Файл Версия Размер
Native_FTP_dll_x86-64.zip 23
.zip 2,19Mb
08.12.15
23
.zip 1 2,19Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Виталий Барилко (Diversus) 03.09.15 10:50
2. Антон Егоров (gortrex) 03.09.15 13:18
3. Ilya Popko (IlyaPopko) 14.09.15 10:20
А какие доп. возможности есть? Например есть возможность удержания соединения (доп. таймаут)? или возможность докачки?
4. Антон Егоров (gortrex) 16.09.15 15:46
Доп возможности это: функция существует и свойство ошибка.
Возможность докачки и удержания соединения можно доделать.
5. Денис Кузнецов (kuza_87) 04.10.15 09:46
Скачал. Спасибо. Не работает справка, нет описания методов.
6. Денис Кузнецов (kuza_87) 04.10.15 09:48
Извиняюсь за наезд. Открыл на другой машине справку - всё читается нормально.
7. Bo Va (KTo) 07.12.15 07:33
Добрый день. На платформе "8.3.5.1248" Не удалось завести. Ошибка на скрине.
Прикрепленные файлы:
8. Антон Егоров (gortrex) 07.12.15 10:43
(7) KTo, на 8.3.5.1625 толстый клиент, клиент-серверный вариант, работает!
Подключать желательно через общий макет.
9. Bo Va (KTo) 07.12.15 11:05
На клиенте почему-то вдруг заработало) Но мне надо на сервере. Спасибо, сейчас попробую через макет.

Через макет тоже не работает, может потому, что сервер 64 разрядный? Комментарий автора бы услышать. Может я что не так делаю?
10. Bo Va (KTo) 07.12.15 11:35
(8) gortrex, блин) а вы ведь и есть автор?) Что скажете может быть дело в разрядности?
11. Антон Егоров (gortrex) 07.12.15 11:51
(10) KTo, Да дело в разрядности!
позже попробую скомпилировать 64bit.
12. Bo Va (KTo) 07.12.15 12:13
(11) gortrex, был бы очень признателен) Специально переписывал функционал для регламентных заданий и попал на такой вот сюрприз встроенного клиента. Пришлось искать скорей замену)
13. Антон Егоров (gortrex) 07.12.15 13:41
(12) KTo, Добавил NativeFTP_x64.dll, проверить не было времени.
Попробуйте, может заработает!
14. Bo Va (KTo) 08.12.15 09:52
Жаль, но на сервере не работает компонента.
15. Антон Егоров (gortrex) 08.12.15 10:21
(14) KTo, Проверил у меня работает под х64 сервером!
16. Антон Егоров (gortrex) 08.12.15 10:23
Попробуйте загружать из файла: КомпУст=ПодключитьВнешнююКомпоненту("C:\\NativeFTP_x64.dll","NativeFTP",ТипВнешнейКомпоненты.Native);
И проверьте права на файл.
17. Bo Va (KTo) 08.12.15 11:20
(15) gortrex, это радует) тогда еще покопаюсь, хотя, конечно, хотелось бы из макета) у нас тут распределенная база и получилось бы вообще круто)
18. Bo Va (KTo) 08.12.15 11:50
(16) gortrex, спасибо тебе добрый человек за терпение) беру свои слова назад, это я забыл, что два дня назад перенес тестовую базу на другой сервер) Поэтому компонента была на одном сервере, а загружал ее с другого, так что из каталога все работает)
19. Сергей (Che) Коцюра (CheBurator) 08.12.15 22:25
20. Антон Егоров (gortrex) 09.12.15 09:06
21. Bo Va (KTo) 11.12.15 07:58
Похоже нашел еще недочет. В процедуре Удалить() похоже меняется параметр, если туда передать доступный только для чтения реквизит, будет вызвано исключение. Надо делать через переменную, что-то вроде:

Соединение.УстановитьТекущийКаталог("/" + Папка)
ВременноеИмяФайла = Файл.Имя;
Соединение.Удалить(ВременноеИмяФайла);
22. Антон Егоров (gortrex) 11.12.15 11:13
(21) KTo, нет параметр не меняется, как получить ошибку написано в хелпе.
Возможно не правильный параметр.
23. Bo Va (KTo) 11.12.15 12:16
(22) gortrex, в ошибке написано "нет ошибок!", а в исключении "Поле объекта недоступно для записи", в моем примере это имя, объекта файл, которое только для чтения, из этого я сделал вывод что компонента его пытается изменить.

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

Имя сбойного приложения: rphost.exe, версия: 8.3.5.1248, отметка времени: 0x5449531b
Имя сбойного модуля: NativeFTP_x64.dll, версия: 0.0.0.0, отметка времени 0x00000000
Код исключения: 0xc0000005
Смещение ошибки: 0x00000000000c6ca8
Идентификатор сбойного процесса: 0x9ae0
Время запуска сбойного приложения: 0x01d133e050cdd59d
Путь сбойного приложения: C:\Program Files\1cv8\8.3.5.1248\bin\rphost.exe
Путь сбойного модуля: C:\Users\SQLService\AppData\Local\Temp\NativeFTP_x64.dll
Код отчета: 1f6bbcef-9fd6-11e5-ab88-00155da38900

Может у кого-то работает без сбоев?
24. Антон Егоров (gortrex) 11.12.15 16:12
(23) KTo, передавать можно только простые типы данных (строка, число...)
Покажите кусок кода, где возникает ошибка!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа