FTPСоединение устанавливается, но не создаются каталоги и не загружаются файлы

1. va582 19.08.19 18:36 Сейчас в теме
Здравствуйте всем, кто это читает.
Первый раз тут спрашиваю.

Кто-нибудь сталкивался с ошибкой
Ошибка при вызове метода контекста (СоздатьКаталог)
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Соединение.СоздатьКаталог("/" + Строка(ИдКонтрагента) + "/");
	//Иначе
	//	Сообщить("Каталог " + Строка(ИдКонтрагента) + " уже существует");
	//КонецЕсли;
	//
	//КаталогКонтрагента = "/" + ИдКонтрагента + "/";
КонецПроцедуры
Показать


Кто может направить на истинный путь?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. va582 19.08.19 18:55 Сейчас в теме
А при попытке записи файла выдаёт

Ошибка при вызове метода контекста (Записать)
FTPСоединение.Записать(ИмяВременногоФайла, "test.txt");
по причине:
Ошибка работы с Интернет: ftp://*****.ucoz.site:21 Upload failed (at start/before it took off)
3. vip03 20.08.19 12:36 Сейчас в теме +0.05 $m
а логин и пароль совпадают при ручном подключении к ФТП и из 1с?
похоже на то что просто нет прав на запись.
4. va582 20.08.19 13:14 Сейчас в теме
(3)
а логин и пароль совпадают при ручном подключении к ФТП и из 1с?


Проверил и сверил при отладке адрес, порт, логин и пароль, с этим всё ок.
Тогда бы я даже не мог посмотреть список файлов.
У пользователя права есть, т.к. на другом ПК отрабатывает норм, и через тотал командер всё получается.
Если что-то не так заполнить, тогда уже Ошибка аутентификации при доступе к ресурсу Login denied соответственно сразу же при подключении.
5. matytsin_new 21 21.08.19 07:51 Сейчас в теме +0.05 $m
Может быть, что для пользователя, от имени которого работает сервер 1С нет прав на использование порта или иное ограничение?
6. matytsin_new 21 21.08.19 08:09 Сейчас в теме
Платформа получает настройки прокси из настроек профиля пользователя (если речь идет о Windows). Как правило, полноценный профиль для пользователя, от имени которого запускается сервер 1С не создают. В таком случае имеет смысл создать этот профиль зайти в него и проверить настройки прокси.
7. va582 21.08.19 11:54 Сейчас в теме
(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 ftp://ftp_user01:Passwd99@ftpsrv.oursite.ru/
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
8. va582 21.08.19 12:00 Сейчас в теме
Затык в:

Из блока 1:
> MKD /123
< 257 "/123" created

Из блока 2:
> MKD /124
< 550 Access is denied.

Но как такое может быть? Access is denied получается на сервере ФТП или на Сервере откуда выполняю команду? Может кто подсказать?
9. va582 21.08.19 13:06 Сейчас в теме
Ладно, проблема не с 1С:Предприятием уже получается.
Придётся думать другие способы отправки файлов.

Спасибо всем, кто отозвался!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот