Имя: Пароль:
1C
1С v8
В 1С 82 тормозит ФТП-клиент
0 Оллрайт
 
20.07.11
19:59
Добрый день. Перевели розничную сеть (самописная конфигурация) на платформу 8.2. Обмены в сети производятся через фтп сервер.
 Почему-то теперь на некоторых точках стали возникать проблемы с выгрузкой на фтп.


Функция ПолучитьФайлОбменаСFTP(УзелОтправитель, ПутьКФайлуСообщенияНаДиске)

   ТекущийУзел = ЭтотУзел.Подразделение;
   // Получаем маску для поиска файлов с сообщениями обмена
   МаскаФайлов = ПолучитьИмяФайлаОбмена(УзелОтправитель, ЭтотУзел, "??????????");

   ИмяФайлаСообщенияНаFTP = "";

   Попытка
      ФТПСоед = Новый FTPСоединение(ТекущийУзел.СерверFTP, ТекущийУзел.ПортFTP, ТекущийУзел.ПользовательFTP, ТекущийУзел.ПарольFTP, , ТекущийУзел.ПассивФТП);
   Исключение
      Сообщить(ОписаниеОшибки());

      Возврат Ложь;
   КонецПопытки;

   ФТПСоед.УстановитьТекущийКаталог(ТекущийУзел.ДиректорияFTP);
   Файлы = ФТПСоед.НайтиФайлы("", МаскаФайлов);

   // Отбираем файл с максимальным номером в имени
   Для Каждого ТекФайл Из Файлы Цикл
       Если ПустаяСтрока(ИмяФайлаСообщенияНаFTP) ИЛИ ТекФайл.Имя > ИмяФайлаСообщенияНаFTP Тогда
           ИмяФайлаСообщенияНаFTP = ТекФайл.Имя;
       КонецЕсли;
   КонецЦикла;
   
   Если НЕ ПустаяСтрока(ИмяФайлаСообщенияНаFTP) Тогда        
       Сообщить(" - Считывается файл " + ИмяФайлаСообщенияНаFTP);

       Попытка        
           ФТПСоед.Получить(ИмяФайлаСообщенияНаFTP, ПутьКФайлуСообщенияНаДиске);
           
           Для Каждого ТекФайл Из Файлы Цикл
               ФТПСоед.Удалить(ТекФайл.Путь, ТекФайл.Имя);
           КонецЦикла;                                      
       Исключение            
           Сообщить(ОписаниеОшибки());

           Возврат Ложь;            
       КонецПопытки;
       
       Возврат Истина;        
   КонецЕсли;    
   
   Возврат Ложь;
   
КонецФункции
1 Оллрайт
 
20.07.11
20:05
Я вычитал, что в 8.2 поменялся фтп-клиент. Тормоза возникают при поиске файлов на ФТП. Не знаю даже где копать и чем там можно управлять
2 Lenny
 
20.07.11
21:44
Нужно включить пассивный режим
3 Оллрайт
 
20.07.11
22:25
Спасибо, попробую. уже завтра
4 Оллрайт
 
21.07.11
12:41
Спасибо. Как ни странно, обмен при пассивном режиме прошел почти нормально.

Вот теперь разбираюсь, отчего это так.
http://www.karman.com.ua/topic/20393-chem-otlichajutsja-aktivnii-i-passivnii-rezhim-rabo/
При работе по протоколу FTP между клиентом и сервером устанавливается два соединения - управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы). Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит "Привет! Я хочу подключится к тебе. Вот мое имя и мой пароль". Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.

В Активном режиме, когда клиент говорит "Привет!" он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

В Пассивном режиме, после того как клиент сказал "Привет!", сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключится для установки соединения передачи данных.

Главное отличие между Активным режимом FTP и Пассивным режимом FTP - это сторона, которая открывает соединение для передачи данных. В Активном режиме, клиент должен принять соединение от FTP-сервера. В Пассивном режиме, клиент всегда инициирует соединение.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан