FTPСоединение устанавливается, но не создаются каталоги и не загружаются файлы
Здравствуйте всем, кто это читает.
Первый раз тут спрашиваю.
Кто-нибудь сталкивался с ошибкой
Ошибка при вызове метода контекста (СоздатьКаталог)
FTPСоединение.СоздатьКаталог(ЭтаФорма.Каталог);
по причине:
Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Quote command returned error
Платформа 1С:Предприятие 8.3 (8.3.14.1779), БП 3.0.71.69 ПРОФ. Вариант базы клиент-серверный. Но это не суть (т.к. на этой же платформе и из-под пустой конфигурации на другом ПК работает). Текущий ПК - виртуалка Hyper-V, порт 21 и туда и оттуда открыт.
Само соединение устанавливается, без ошибок.
Файлы и каталоги читать могу.
Пробовал и пассивный и активный режимы, как только не пробовал. Иногда бывало Ошибка создания FTPсоединения: Ошибка при вызове конструктора (FTPСоединение): Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Requested SSL level failed
Каталоги пробовал задавать как "123", "/123", "\123" и со слешами в конце. Пробовал не устанавливать ТекущийКаталог - безрезультатно, ошибка та же.
Вручную создать каталог можно, через ТоталКоммандор. Ну и с другого ПК, с той же платформы создаётся, если задать "/123".
Кто может направить на истинный путь?
Первый раз тут спрашиваю.
Кто-нибудь сталкивался с ошибкой
Ошибка при вызове метода контекста (СоздатьКаталог)
FTPСоединение.СоздатьКаталог(ЭтаФорма.Каталог);
по причине:
Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Quote command returned error
Платформа 1С:Предприятие 8.3 (8.3.14.1779), БП 3.0.71.69 ПРОФ. Вариант базы клиент-серверный. Но это не суть (т.к. на этой же платформе и из-под пустой конфигурации на другом ПК работает). Текущий ПК - виртуалка Hyper-V, порт 21 и туда и оттуда открыт.
Само соединение устанавливается, без ошибок.
Файлы и каталоги читать могу.
Пробовал и пассивный и активный режимы, как только не пробовал. Иногда бывало Ошибка создания FTPсоединения: Ошибка при вызове конструктора (FTPСоединение): Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Requested SSL level failed
Каталоги пробовал задавать как "123", "/123", "\123" и со слешами в конце. Пробовал не устанавливать ТекущийКаталог - безрезультатно, ошибка та же.
Вручную создать каталог можно, через ТоталКоммандор. Ну и с другого ПК, с той же платформы создаётся, если задать "/123".
Функция УстановитьFTPСоединение(Таймаут, СпособВыбораСертификатаWindowsАвто = Неопределено)
Если ЭтаФорма.РекПрокси = 1 Тогда
Прокси = Неопределено;
ИначеЕсли ЭтаФорма.РекПрокси = 2 Тогда
Прокси = Новый ИнтернетПрокси(Истина);
ИначеЕсли ЭтаФорма.РекПрокси = 3 Тогда
Прокси = Новый ИнтернетПрокси(Ложь);
КонецЕсли;
ПассивноеСоединение = ЭтаФорма.РекПассивноеСоединение;
Если ЭтаФорма.РекЗащищенноеСоединение = 1 Тогда
ЗащищенноеСоединение = Неопределено;
ИначеЕсли ЭтаФорма.РекЗащищенноеСоединение = 2 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
ИначеЕсли ЭтаФорма.РекЗащищенноеСоединение = 3 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindowsАвто),
Новый СертификатыУдостоверяющихЦентровWindows());
ИначеЕсли ЭтаФорма.РекЗащищенноеСоединение = 4 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(),
Новый СертификатыУдостоверяющихЦентровWindows());
ИначеЕсли ЭтаФорма.РекЗащищенноеСоединение = 5 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(),
Новый СертификатыУдостоверяющихЦентровФайл("C:\Program Files (x86)\1cv8\8.3.14.1779\bin\cacert.pem"));
ИначеЕсли ЭтаФорма.РекЗащищенноеСоединение = 6 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindowsАвто),
Новый СертификатыУдостоверяющихЦентровФайл("C:\Program Files (x86)\1cv8\8.3.14.1779\bin\cacert.pem"));
КонецЕсли;
Если ЭтаФорма.РекУровеньИспользованияЗащищенногоСоединения = 1 Тогда
УровеньИспользованияЗащищенногоСоединения = Неопределено;
ИначеЕсли ЭтаФорма.РекУровеньИспользованияЗащищенногоСоединения = 2 Тогда
УровеньИспользованияЗащищенногоСоединения = УровеньИспользованияЗащищенногоСоединенияFTP.Авто;
ИначеЕсли ЭтаФорма.РекУровеньИспользованияЗащищенногоСоединения = 3 Тогда
УровеньИспользованияЗащищенногоСоединения = УровеньИспользованияЗащищенногоСоединенияFTP.ИспользоватьЕслиВозможно;
ИначеЕсли ЭтаФорма.РекУровеньИспользованияЗащищенногоСоединения = 4 Тогда
УровеньИспользованияЗащищенногоСоединения = УровеньИспользованияЗащищенногоСоединенияFTP.НеИспользовать;
ИначеЕсли ЭтаФорма.РекУровеньИспользованияЗащищенногоСоединения = 5 Тогда
УровеньИспользованияЗащищенногоСоединения = УровеньИспользованияЗащищенногоСоединенияFTP.Требовать;
ИначеЕсли ЭтаФорма.РекУровеньИспользованияЗащищенногоСоединения = 5 Тогда
УровеньИспользованияЗащищенногоСоединения = УровеньИспользованияЗащищенногоСоединенияFTP.ТребоватьДляУправления;
КонецЕсли;
Попытка
FTPСоединение = Новый FTPСоединение(
ЭтаФорма.Адрес,
Число(ЭтаФорма.Порт),
ЭтаФорма.Логин,
ЭтаФорма.Пароль,
Прокси,
ПассивноеСоединение,
Таймаут,
ЗащищенноеСоединение,
УровеньИспользованияЗащищенногоСоединения
);
Исключение
FTPСоединение = Неопределено;
Сообщить("Ошибка создания FTPсоединения: " + ОписаниеОшибки());
КонецПопытки;
Возврат FTPСоединение;
КонецФункции
//ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
//Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
//Новый СертификатыУдостоверяющихЦентровWindows());
//
//ssl2 = Новый ЗащищенноеСоединениеOpenSSL(
//Новый СертификатКлиентаWindows(),
//Новый СертификатыУдостоверяющихЦентровФайл("C:/certs/myca.pem"));
//
//ssl3 = Новый ЗащищенноеСоединениеOpenSSL(
//Новый СертификатКлиентаФайл("C:/certs/user.p12", "password" ),
//Новый СертификатыУдостоверяющихЦентровФайл("C:/certs/myca.pem"));
//
//ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
//
//ssl5 = Новый ЗащищенноеСоединениеOpenSSL(
//Новый СертификатКлиентаФайл("C:/certs/user.p13", "password" ),
//Новый СертификатыУдостоверяющихЦентровОС()); Показать&НаСервере
Процедура СоздатьТестовыйКаталогНаСервере()
FTPСоединение = УстановитьFTPСоединение(10);
FTPСоединение.УстановитьТекущийКаталог("/");
//Попытка
FTPСоединение.СоздатьКаталог(ЭтаФОрма.Каталог);
//Сообщить("Каталог создан " + ЭтаФОрма.Каталог);
//Исключение
// Сообщить("НИТ " + ЭтаФОрма.Каталог + " " + );
//КонецПопытки;
//ИдКонтрагента = "314";
//ГлавнаяДиректория = "/";
//FTPСоединение.УстановитьТекущийКаталог(ГлавнаяДиректория);
//КаталогСуществует = ПроверитьНаличиеКаталогаНаFTPСервере(FTPСоединение, ГлавнаяДиректория, ИдКонтрагента);
//Если НЕ КаталогСуществует Тогда
// FTPСоединение.СоздатьКаталог("/" + Строка(ИдКонтрагента) + "/");
//Иначе
// Сообщить("Каталог " + Строка(ИдКонтрагента) + " уже существует");
//КонецЕсли;
//
//КаталогКонтрагента = "/" + ИдКонтрагента + "/";
КонецПроцедуры ПоказатьКто может направить на истинный путь?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А при попытке записи файла выдаёт
Ошибка при вызове метода контекста (Записать)
FTPСоединение.Записать(ИмяВременногоФайла, "test.txt");
по причине:
Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Upload failed (at start/before it took off)
Ошибка при вызове метода контекста (Записать)
FTPСоединение.Записать(ИмяВременногоФайла, "test.txt");
по причине:
Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Upload failed (at start/before it took off)
а логин и пароль совпадают при ручном подключении к ФТП и из 1с?
похоже на то что просто нет прав на запись.
похоже на то что просто нет прав на запись.
(3)
Проверил и сверил при отладке адрес, порт, логин и пароль, с этим всё ок.
Тогда бы я даже не мог посмотреть список файлов.
У пользователя права есть, т.к. на другом ПК отрабатывает норм, и через тотал командер всё получается.
Если что-то не так заполнить, тогда уже Ошибка аутентификации при доступе к ресурсу Login denied соответственно сразу же при подключении.
а логин и пароль совпадают при ручном подключении к ФТП и из 1с?
Проверил и сверил при отладке адрес, порт, логин и пароль, с этим всё ок.
Тогда бы я даже не мог посмотреть список файлов.
У пользователя права есть, т.к. на другом ПК отрабатывает норм, и через тотал командер всё получается.
Если что-то не так заполнить, тогда уже Ошибка аутентификации при доступе к ресурсу Login denied соответственно сразу же при подключении.
Может быть, что для пользователя, от имени которого работает сервер 1С нет прав на использование порта или иное ограничение?
Платформа получает настройки прокси из настроек профиля пользователя (если речь идет о Windows). Как правило, полноценный профиль для пользователя, от имени которого запускается сервер 1С не создают. В таком случае имеет смысл создать этот профиль зайти в него и проверить настройки прокси.
(6) Просто тут ещё проблема в том, что это не мой сервер, где не работает создание каталога. В Windows административных прав нет. И настройки эти посмотреть нет возможности. В этом проблема :(.
Через cURL (первый блок - с обычного ПК, где ОК; второй блок - с машины, где из 1С так же не создаётся каталог на ФТП).
Может ли блокировать файервол на второй машине? (Там, кстати, Windows Server 2012 на Hyper-V, подключаюсь через RemoteApp)
curl -k -v "ftp://ftp_user01:Passwd99@ftpsrv.oursite.ru/" -Q "-MKD /123" --ftp-pasv --ftp-create-dirs --proxy-basic
* Trying 47.156.67.88:21...
* TCP_NODELAY set
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
< 220 Welcome to FTP Server 'a'
> USER ftp_user01
< 331 Please specify the password.
> PASS Passwd99
< 230 Login successful.
> PWD
< 257 "/" is the current directory
* Entry path is '/'
> EPSV
* Connect data stream passively
* ftp_perform ends with SECONDARY: 0
< 229 Entering Extended Passive Mode (|||20438|)
* Trying 47.156.67.88:20438...
* TCP_NODELAY set
* Connecting to 47.156.67.88 (47.156.67.88) port 20438
* connect to 47.156.67.88 port 21 failed: Connection refused
* Failed to connect to ftpsrv.oursite.ru port 21: Connection refused
* Failed EPSV attempt. Disabling EPSV
> PASV
< 227 Entering Passive Mode (47,156,67,88,79,52).
* Trying 47.156.67.88:20276...
* TCP_NODELAY set
* Connecting to 47.156.67.88 (47.156.67.88) port 20276
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
> TYPE A
< 200 Switching to ASCII mode.
> LIST
< 150 Here comes the directory listing.
* Maxdownload = -1
drwx------ 3 1542 601 4096 Aug 16 21:03 313
-rw------- 1 1542 601 0 Aug 09 10:42 new_file.txt
* Remembering we are in dir ""
< 226 Directory send OK.
> MKD /123
< 257 "/123" created
* Connection #0 to host ftpsrv.oursite.ru left intact
curl
drwx------ 2 1542 601 4096 Aug 21 08:26 123
drwx------ 3 1542 601 4096 Aug 16 21:03 313
-rw------- 1 1542 601 0 Aug 09 10:42 new_file.txt
curl -k -v "ftp://ftp_user01:Passwd99@ftpsrv.oursite.ru/" -Q "-MKD /124" --ftp-pasv --ftp-create-dirs --proxy-basic
* Trying 47.156.67.88:21...
* TCP_NODELAY set
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
< 220 Welcome to FTP Server 'a'
> USER ftp_user01
< 331 Please specify the password.
> PASS Passwd99
< 230 Login successful.
> PWD
< 257 "/" is the current directory
* Entry path is '/'
> EPSV
* Connect data stream passively
< 550 Access is denied.
* Failed EPSV attempt. Disabling EPSV
> PASV
* ftp_perform ends with SECONDARY: 0
< 227 Entering Passive Mode (47,156,67,88,80,182).
* Trying 47.156.67.88:20662...
* TCP_NODELAY set
* Connecting to 47.156.67.88 (47.156.67.88) port 20662
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
> TYPE A
< 200 Switching to ASCII mode.
> LIST
< 150 Here comes the directory listing.
* Maxdownload = -1
drwx------ 2 1542 601 4096 Aug 21 08:26 123
drwx------ 3 1542 601 4096 Aug 16 21:03 313
-rw------- 1 1542 601 0 Aug 09 10:42 new_file.txt
* Remembering we are in dir ""
< 226 Directory send OK.
> MKD /124
< 550 Access is denied.
* QUOT string not accepted: MKD /124
* Connection #0 to host ftpsrv.oursite.ru left intact
curl: (21) QUOT string not accepted: MKD /124
Через cURL (первый блок - с обычного ПК, где ОК; второй блок - с машины, где из 1С так же не создаётся каталог на ФТП).
Может ли блокировать файервол на второй машине? (Там, кстати, Windows Server 2012 на Hyper-V, подключаюсь через RemoteApp)
curl -k -v "ftp://ftp_user01:Passwd99@ftpsrv.oursite.ru/" -Q "-MKD /123" --ftp-pasv --ftp-create-dirs --proxy-basic
* Trying 47.156.67.88:21...
* TCP_NODELAY set
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
< 220 Welcome to FTP Server 'a'
> USER ftp_user01
< 331 Please specify the password.
> PASS Passwd99
< 230 Login successful.
> PWD
< 257 "/" is the current directory
* Entry path is '/'
> EPSV
* Connect data stream passively
* ftp_perform ends with SECONDARY: 0
< 229 Entering Extended Passive Mode (|||20438|)
* Trying 47.156.67.88:20438...
* TCP_NODELAY set
* Connecting to 47.156.67.88 (47.156.67.88) port 20438
* connect to 47.156.67.88 port 21 failed: Connection refused
* Failed to connect to ftpsrv.oursite.ru port 21: Connection refused
* Failed EPSV attempt. Disabling EPSV
> PASV
< 227 Entering Passive Mode (47,156,67,88,79,52).
* Trying 47.156.67.88:20276...
* TCP_NODELAY set
* Connecting to 47.156.67.88 (47.156.67.88) port 20276
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
> TYPE A
< 200 Switching to ASCII mode.
> LIST
< 150 Here comes the directory listing.
* Maxdownload = -1
drwx------ 3 1542 601 4096 Aug 16 21:03 313
-rw------- 1 1542 601 0 Aug 09 10:42 new_file.txt
* Remembering we are in dir ""
< 226 Directory send OK.
> MKD /123
< 257 "/123" created
* Connection #0 to host ftpsrv.oursite.ru left intact
curl
drwx------ 2 1542 601 4096 Aug 21 08:26 123
drwx------ 3 1542 601 4096 Aug 16 21:03 313
-rw------- 1 1542 601 0 Aug 09 10:42 new_file.txt
curl -k -v "ftp://ftp_user01:Passwd99@ftpsrv.oursite.ru/" -Q "-MKD /124" --ftp-pasv --ftp-create-dirs --proxy-basic
* Trying 47.156.67.88:21...
* TCP_NODELAY set
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
< 220 Welcome to FTP Server 'a'
> USER ftp_user01
< 331 Please specify the password.
> PASS Passwd99
< 230 Login successful.
> PWD
< 257 "/" is the current directory
* Entry path is '/'
> EPSV
* Connect data stream passively
< 550 Access is denied.
* Failed EPSV attempt. Disabling EPSV
> PASV
* ftp_perform ends with SECONDARY: 0
< 227 Entering Passive Mode (47,156,67,88,80,182).
* Trying 47.156.67.88:20662...
* TCP_NODELAY set
* Connecting to 47.156.67.88 (47.156.67.88) port 20662
* Connected to ftpsrv.oursite.ru (47.156.67.88) port 21 (#0)
> TYPE A
< 200 Switching to ASCII mode.
> LIST
< 150 Here comes the directory listing.
* Maxdownload = -1
drwx------ 2 1542 601 4096 Aug 21 08:26 123
drwx------ 3 1542 601 4096 Aug 16 21:03 313
-rw------- 1 1542 601 0 Aug 09 10:42 new_file.txt
* Remembering we are in dir ""
< 226 Directory send OK.
> MKD /124
< 550 Access is denied.
* QUOT string not accepted: MKD /124
* Connection #0 to host ftpsrv.oursite.ru left intact
curl: (21) QUOT string not accepted: MKD /124
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот