Имя: Пароль:
1C
1С v8
Ошибка при FTPСоединение.Получить
0 yurikmellon2
 
13.04.23
09:37
День добрый. Прошу помощи спецов.

Задача перекинуть файл с FTP сервера на локальный ресурс. Вроде всё просто, но валит ошибку "Ошибка работы с Интернет:  ftp://92.53.96.218:21 FTP: weird server reply"
Подключаюсь в пассивном режиме.

Валится на строчке
FTPСоединение.Получить(ФайлНаСервере.ПолноеИмя,"C:\temp\" + ФайлНаСервере.Имя);

При этом на локальном ресурсе файл создаётся, но пустой, с нулевым размером.
Не могу понять в чём причина. Какие то настройки FTP сервера? Или что?

FTPСоединение = Новый FTPСоединение(Адрес,,Логин,Пароль,,Истина);
ФайлыНаРесурсе = FTPСоединение.НайтиФайлы ("/answer","*.xml",); // /answer													   											
	
Если ФайлыНаРесурсе.Количество()>0 Тогда																			   			
	Для Каждого ФайлНаСервере из ФайлыНаРесурсе Цикл														   	
	   КаталогИтог = ИмяКаталога +"\"+ ФайлНаСервере.ИмяБезРасширения + ".xml";		
		//FTPСоединение.Получить(ФайлНаСервере.ПолноеИмя,КаталогИтог);
		FTPСоединение.Получить(ФайлНаСервере.ПолноеИмя,"C:\temp\" + ФайлНаСервере.Имя);
		//
	КонецЦикла;			
	ПрочитатьФайлXML();
КонецЕсли;


https://i.imgur.com/nEuuZhH.jpg
https://i.imgur.com/YewOAUX.jpg
1 Garykom
 
гуру
13.04.23
09:27
2 yurikmellon2
 
13.04.23
09:33
(1) видел эту тему. Там решилось Пассивным режимом. Я же написал в (0), что подключаюсь именно так. FTPСоединение = Новый FTPСоединение(Адрес,,Логин,Пароль,,Истина); Истина это как раз пассивный режим.
3 Казуар
 
13.04.23
09:44
если правый слеш
КаталогИтог = ИмяКаталога +"/"+ ФайлНаСервере.ИмяБезРасширения + ".xml";        
FTPСоединение.Получить(ФайлНаСервере.ПолноеИмя,КаталогИтог);
4 Garykom
 
гуру
13.04.23
09:45
(2) Ты плохо видел
Там
""I resolve my problem, it was a configuration problem from my ftp server ! My fault , sorry ;-)
This message appear when you limit the numbers of IPs to connect to the ftp server, in my case the limit was 2, I change to 5. ""
5 Смотрящий
 
13.04.23
09:49
(0) Ищещшь файлы в каталоге "/answer", а читать пытаешься из корня ...
6 yurikmellon2
 
13.04.23
09:50
(4) это я тоже проверил, лимит соединений не превышается
7 yurikmellon2
 
13.04.23
09:52
(5) не, из /answer

https://i.imgur.com/V4dQUvu.jpg
8 Смотрящий
 
13.04.23
09:54
(7) Эт ты так думаешь. Выдай команду УстановитьТекущийКаталог перед циклом чтения.
9 yurikmellon2
 
13.04.23
09:54
(3) я уже не в КаталогИтог пишу, а тупо себе на локальный диск "C:\temp\" + ФайлНаСервере.Имя
не в этом дело
10 yurikmellon2
 
13.04.23
09:57
(8) спасибо за идею, но нет, не помогло
11 Garykom
 
гуру
13.04.23
09:59
Покажи
Сообщить(""+ФайлНаСервере.ПолноеИмя);
12 Смотрящий
 
13.04.23
10:00
(10) Читай не по полному имени, а по имени файла
13 yurikmellon2
 
13.04.23
10:05
14 yurikmellon2
 
13.04.23
10:08
(12) такая же фигня. Установил текущий каталог answer, FTPСоединение.Получить(ФайлНаСервере.Имя
Ошибка та же FTP: weird server reply
15 Garykom
 
гуру
13.04.23
10:10
FTPСоединение.УстановитьТекущийКаталог("/");
сделай перед Получить()
16 Garykom
 
гуру
13.04.23
10:11
Суть что путь для Получить() передается относительно текущего каталога
17 yurikmellon2
 
13.04.23
10:13
(15) если по имени, то файл не находит Remote file not found
если по полному, то weird server reply
18 Garykom
 
гуру
13.04.23
10:13
Гм хотя в (13) есть первый слеш в "/answer/SA143249.xml"
Странно но попробуй

FTPСоединение.УстановитьТекущийКаталог("/");
FTPСоединение.Получить("answer/SA143249.xml","C:\temp\" + "SA143249.xml");
19 Garykom
 
гуру
13.04.23
10:16
(18)+ либо уже
FTPСоединение.УстановитьТекущийКаталог("/answer/");
FTPСоединение.Получить("SA143249.xml","C:\temp\" + "SA143249.xml");
20 yurikmellon2
 
13.04.23
10:16
(18)

            Сообщить(""+ФайлНаСервере.ПолноеИмя);
            FTPСоединение.УстановитьТекущийКаталог("/");
            //FTPСоединение.Получить(ФайлНаСервере.ПолноеИмя,"C:\temp\" + ФайлНаСервере.Имя);
            FTPСоединение.Получить("answer/SA143249.xml","C:\temp\" + ФайлНаСервере.Имя);


то же самое weird server reply
21 yurikmellon2
 
13.04.23
10:17
(19) то же самое
22 Garykom
 
гуру
13.04.23
10:17
Попробуй другим клиентом скачать этот файл
Например встроенным в Total или Far

Возможно файл на блокировке
23 Garykom
 
гуру
13.04.23
10:18
(22)+ И какая ошибка будет или лог
24 yurikmellon2
 
13.04.23
10:18
дело, судя по всему, в настройках FTP сервера, код рабочий. Вт что с настройками не так?
25 yurikmellon2
 
13.04.23
10:19
(22) FileZilla'ой без проблем копирую
26 Garykom
 
гуру
13.04.23
10:20
(24) см (22)
т.е. пробуешь другим клиентом и смотришь что отвечает сервер на попытку Получить
1С к сожалению ответы которые не понимает тупо сообщает "weird server reply"
27 Garykom
 
гуру
13.04.23
10:21
Эм а точно не FTPS?
28 Garykom
 
гуру
13.04.23
10:22
FTPСоединение (FTPConnection)
По указанному серверу
Синтаксис:
Новый FTPСоединение(<Сервер>, <Порт>, <ИмяПользователя>, <ПарольПользователя>, <ПассивноеСоединение>, <Таймаут>, <ЗащищенноеСоединение>, <УровеньИспользованияЗащищенногоСоединения>)
Параметры:
<Сервер> (обязательный)
Тип: Строка.
Сервер, с которым осуществляется соединение.
<Порт> (необязательный)
Тип: Число.
Порт сервера, с которым осуществляется соединение.
Значение по умолчанию для FTP соединений равно 21, для защищенных FTPS соединений - 990.
Значение по умолчанию: порт по умолчанию для используемого протокола.
<ИмяПользователя> (необязательный)
Тип: Строка.
Имя пользователя на указанном сервере.
<ПарольПользователя> (необязательный)
Тип: Строка.
Пароль пользователя на указанном сервере.
<ПассивноеСоединение> (необязательный)
Тип: Булево.
Определяет тип ftp-соединения.
Значение по умолчанию: Ложь.
<Таймаут> (необязательный)
Тип: Число.
Таймаут в секундах на установку FTP соединения и выполнение FTP операций. 0 - не устанавливать таймаут.
Значение по умолчанию: 0.
<ЗащищенноеСоединение> (необязательный)
Тип: ЗащищенноеСоединениеOpenSSL, Неопределено.
Объект защищенного соединения для осуществления FTPS-соединения, если указан.
Если параметр не задан, выполняется попытка подключения к серверу FTP или FTPES в незащищенном режиме. При этом, если сервер требует установки защищенного режима, будет сгенерирована ошибка.
Значение по умолчанию: Неопределено.
<УровеньИспользованияЗащищенногоСоединения> (необязательный)
Тип: УровеньИспользованияЗащищенногоСоединенияFTP.
Определяет требования по использованию защищенного SSL-соединения.
Значение по умолчанию: Авто.
Описание:
Создает объект FTPСоединение.
Использование в версии:
Доступен, начиная с версии 8.0.
     Методическая информация
29 Смотрящий
 
13.04.23
10:23
(25) FTPСоединение = Новый FTPСоединение(Адрес,,Логин,Пароль,,Истина);
5 параметр должен быть Истина, у тебя Ложь по умолчанию
6 параметр - число, у тебя булево
30 Смотрящий
 
13.04.23
10:24
Перед Истина запятую убери
31 yurikmellon2
 
13.04.23
10:28
(27) да не, подключение же проходит. Файл то на сервере в каталоге ищется
вот это же отрабатывает ФайлыНаРесурсе = FTPСоединение.НайтиФайлы ("/answer","*.xml",);
32 Garykom
 
гуру
13.04.23
10:34
(31) "Протокол FTP устанавливает между клиентом и сервером два типа соединений. Одно из них называется управляющим соединением и предназначено для передачи команд, а второе называется соединением для передачи данных и предназначается для передачи различных файлов на сервер. К первому типу соединения, то есть к управляющему, активный или пассивный режимы работы FTP не имеют никакого отношения. Выбор между этими двумя режимами делается пользователем при установке соединения для передачи данных."
https://vps.ua/wiki/ftp-mode/

поиск он по управляющему и не связан с передачей/получением файлов

"Главное отличие активного и пассивного режимов работы протокола FTP состоит в том, кто из связки клиент-сервер производит подключение для передачи данных, то есть, грубо говоря, кто к кому подключается. Также отличаются порты, на которые производится передача данных. При активном режиме работы, клиент производит управляющее соединение с сервером, а вот подключение для передачи данных производит уже сам сервер. При пассивном режиме работы подключение для передачи данных, равно как и управляющее соединение с сервером инициируется только клиентом. То есть, в активом режиме сервер подключается к клиенту для передачи данных, а в пассивном – клиент к серверу."
33 Garykom
 
гуру
13.04.23
10:36
но странно что у тебя булево в поле числовое таймаут прокатило
вероятно еще все осложнилось Истина = 1, т.е. таймаут 1 секунда
34 yurikmellon2
 
13.04.23
10:36
35 yurikmellon2
 
13.04.23
10:38
(33) Булево в параметре ПассивныйРежим.
Таймаут я тоже пытался выставлять, не помогло
36 Garykom
 
гуру
13.04.23
10:39
(34) пиши в 1С у них справка неправильная ))
37 Garykom
 
гуру
13.04.23
10:39
(36)+ сейчас проверил на 8.3.22
такой же прикол
что быстрая подсказка отличается от СП
38 yurikmellon2
 
13.04.23
10:42
(37) если по другому параметры расставлять, то ошибка "Не соответствие параметров". Т.е. параметры соединения, всё таки, выставлены правильно
39 Garykom
 
гуру
13.04.23
10:46
(38) проверь
после создания FTPСоединение
глянь что в "FTPСоединение.ПассивныйРежим"
40 yurikmellon2
 
13.04.23
10:49
41 Garykom
 
гуру
13.04.23
10:49
файрвол проверь
еще лучше попробуй с другого компа(ip) и другой версии платформы 1С
42 Garykom
 
гуру
13.04.23
10:51
забей на 1С
используй ncftp
https://habr.com/ru/articles/184336/
43 Garykom
 
гуру
13.04.23
10:52
(42)+ в макет с двоичными данными засунь, когда надо сохраняешь и запускаешь с параметрами
44 yurikmellon2
 
13.04.23
11:12
(41) запустил обработку с сервера, на котором лежит база - всё работает.
Я, конечно, затупил, надо было сразу это попробовать.
Всем спасибо за потраченное время. Буду дальне разбираться почему с сервера работает, а с локальной машины нет.