Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

FTP СоздатьКаталог

FTP  СоздатьКаталог
Я
   Olga1c8
 
29.05.18 - 14:31
Добрый день!
1с УФ. Подключаюсь к FTP, соединение проходит, каталог устанавливается. но не создается новый каталог в нем. Ругается:
Ошибка при вызове метода контекста (СоздатьКаталог): Ошибка работы с Интернет:  ftp://***.***.***.***:21 Quote command returned error
Код

    Попытка
        Соединение = Новый FTPСоединение(ФТПХост,ФТППорт, ФТППользователь, ФТППароль);
        Сообщить("Соединяемся с сервером FTP....");
    Исключение
        Сообщить("Не могу соединиться с FTP сервером");
        Возврат;
    КонецПопытки;
    Сообщить("Соединение с "+ФТПХост+" установлено");

    НачальнаяПапкаВыгрузкиКомп = "D:\1С\webdata";
    Если ТекущаяПапка = Неопределено Тогда ТекущаяПапка = НачальнаяПапкаВыгрузкиКомп КонецЕсли; 
    МассивФайлов = НайтиФайлы(ТекущаяПапка, "*");
    ТекКаталог = "upload/";
    
    Для Каждого НайденныйФайл Из МассивФайлов Цикл
        Файл = Новый Файл(НайденныйФайл.ПолноеИмя);
        Если Файл.ЭтоКаталог() Тогда
            //ЕстьТакаяПапка = Соединение.НайтиФайлы(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/"),НайденныйФайл.Имя).Количество() > 0;

            //Вот эта строка выше тоже не работает, я ее пока убрала временно.

            ЕстьТакаяПапка = Ложь;
            Если не ЕстьТакаяПапка Тогда
                НомерПопытки = 1;
                Успешно = Ложь;
                Пока НомерПопытки < 2 и не Успешно Цикл
                    Попытка
                        Соединение.УстановитьТекущийКаталог(ТекКаталог);//вот это нормально проходит

                        Сообщить("Установлен каталог "+ТекКаталог);
                        Успешно = Истина;
                    Исключение
                        Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
                        НомерПопытки = НомерПопытки + 1;
                    КонецПопытки;
                КонецЦикла;
                Если Не Успешно Тогда
                    Возврат Ложь;
                КонецЕсли;
                
                НомерПопытки = 1;
                Успешно = Ложь;
                Пока НомерПопытки < 2 и не Успешно Цикл
                    Попытка
                        Соединение.СоздатьКаталог(НайденныйФайл.Имя);  //а здесь вылетает с ошибкой, указанной выше.

                        Успешно = Истина;
                    Исключение
                        Сообщить("Попытка №" + НомерПопытки + ", каталог " + НайденныйФайл.Имя + " - " + ОписаниеОшибки());
                        НомерПопытки = НомерПопытки + 1;
                    КонецПопытки;
                КонецЦикла;
                
                Если Не Успешно Тогда
                    Возврат Ложь;
                КонецЕсли;

            КонецЕсли;


не может создать каталог на FTP.
На стороне фтп админы говорят что права на папку есть, обычный файл xml я могу скопировать через 1с, а каталог создать не могу. Цель: выгруженные файлы для сайта типовой выгрузкой из УТ надо положить на ФТП "как есть" со всеми вложенными папками и картинками.
Чего не так? Подскажите пожалуйста, я уже замучилась.
 
 
   Cool_Profi
 
1 - 29.05.18 - 14:54
А чему равно НайденныйФайл.Имя ?
   Olga1c8
 
2 - 29.05.18 - 14:57
(1) Это имя каталога import_files, который внутри каталога webdata на диске компьютера. в отладчике так: НайденныйФайл.Имя = "import_files"
   Cool_Profi
 
3 - 29.05.18 - 15:17
Ну так права на чтение папки есть, а на создание каталогов нет .
Нужно с разбегу в голову с вертушки админам. Чтобы не выделывались и читали логи.
   Cool_Profi
 
4 - 29.05.18 - 15:17
"вертушка" - это, например, "маваши-гери".
   Olga1c8
 
5 - 29.05.18 - 15:41
(3) раз такое подробное разделение прав имеется, то возможно и так. Сказала админам, отпишусь по результату. А еще есть какие-то варианты решения? Или только права могут быть?
   Cool_Profi
 
6 - 29.05.18 - 15:49
(5) Ну так логи нужно смотреть. Наугад сказать нельзя
   Olga1c8
 
7 - 29.05.18 - 16:13
(6) А метод Соединение.НайтиФайлы тоже по этой причине не работает? Там примерно такая же ошибка.
   Franchiser
 
8 - 29.05.18 - 16:20
   Franchiser
 
9 - 29.05.18 - 16:24
Перед СоздатьКаталог() наверно нужно выполнить УстановитьТекущийКаталог()
   Olga1c8
 
10 - 29.05.18 - 16:36
(9) там ведь в коде видно, что я каталог устанавливаю сначала.
 
 Рекламное место пустует
   Olga1c8
 
11 - 29.05.18 - 16:37
(8) да, это я гуглила, после этого поста сообщение вывела что текущий каталог действительно устанавливается.
   Olga1c8
 
12 - 30.05.18 - 10:14
Через файлзиллу смотрю, этот каталог создается, а в 1с-ке ругается и дальше выгрузка не идет.
   Franchiser
 
13 - 30.05.18 - 10:19
Может так:
FTPСоединение.ПассивныйРежим(Ложь);
   Olga1c8
 
14 - 30.05.18 - 11:00
Проблема вот в чем: я ж временно убрала строчку где поиск файлов, и сразу же создаю каталог. А если он там есть, то программа ругается. ок, я вернула на родину эту строчку, и проблема у меня теперь в ней.

ЕстьТакаяПапка = Соединение.НайтиФайлы(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/"),НайденныйФайл.Имя).Количество() > 0;

ругается, говорит Ошибка при вызове метода контекста (НайтиФайлы) 
по причине:
Ошибка аутентификации при доступе к ресурсу:  ftp://185.41.162.114:21" target="_blank" rel="nofollow" class="extralink">ftp://185.41.162.114:21 Access denied to remote resource
   Olga1c8
 
15 - 30.05.18 - 11:05
Может удалить все перед выгрузкой?
   hhhh
 
16 - 30.05.18 - 11:05
(14) выкинь "/", оно вроде вредит там
   Franchiser
 
17 - 30.05.18 - 11:06
(16) Параметры:

<Путь> (обязательный)

Тип: Строка.
Путь к каталогу, в котором производится поиск. При использовании этой схемы в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
Допускается указание полного имени файла (путь + имя).
   Franchiser
 
18 - 30.05.18 - 11:07
Чему равно 
НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/")
?
   hhhh
 
19 - 30.05.18 - 11:08
(17) вообще в клонце слеш не нужен. Откуда там слеш взялся?
   hhhh
 
20 - 30.05.18 - 11:08
(17) ни прямой, ни обратный.
   Franchiser
 
21 - 30.05.18 - 11:10
(20) согласен, в конце убери
   Franchiser
 
22 - 30.05.18 - 11:11
И слеши должны быть не обратные, а прямые
   Franchiser
 
23 - 30.05.18 - 11:13
Интересно должно быть ftp:// или ftp:\\ ?
   Olga1c8
 
24 - 30.05.18 - 11:17
слэши прямые там, я ж их как раз заменяю. Но попробую убрать сейчас вообще любые.
   Franchiser
 
25 - 30.05.18 - 11:19
(24) мне кажется нужно убрать только в конце, если убрать все будет каша
   Olga1c8
 
26 - 30.05.18 - 11:20
да, я поняла что в конце) пробую
   Olga1c8
 
27 - 30.05.18 - 11:31
Вобщем я ради эксперимента ту длинную галиматью заменила на простое ЕстьТакаяПапка = Соединение.НайтиФайлы("upload",НайденныйФайл.Имя).Количество() > 0; и оно заработало))) Спасибо, действительно слэш в конце не нужен был) Но теперь другая проблемка вылезла, но по ней меня пока терзают смутные сомнения. Пока я сама с ней поковыряюсь, если не шмогла, то опять к вам обращусь)
   Olga1c8
 
28 - 30.05.18 - 12:55
вощем не шмогла...
тут такое.
каталоги имеют такую структуру:
import_files
   a3
   d7
это все каталоги на компе.
захожу на на фтп в папку upload и ищу там верхний каталог import_files. Если его там нет, то он его создает и идет далее , затем пытается найти файлы уже в upload/import_files, и затем вылетает с ошибкой, когда не может УстановитьТекущийКаталог(upload/import_files/)

А если каталог import_files уже до выгрузки имеется на фтп то когда программа пытается НайтиФайлы в каталоге upload/import_files (без слэш!), то ругается на доступ. Говорит Ошибка при вызове метода контекста (УстановитьТекущийКаталог): Ошибка аутентификации при доступе к ресурсу.
Короче хоть создает он верхний каталог, хоть он уже там есть, все равно не работает, но не работает по разному....

Если я захожу в файлзиллу в каталог import_files, то я могу там внутри и создавать и все такое....
   Olga1c8
 
29 - 30.05.18 - 13:00
блин неправильно написала
Если каталог уже есть на фтп, то он с другой ошибкой вылетает типа Ошибка при вызове метода контекста (НайтиФайлы)
вот
   Franchiser
 
30 - 30.05.18 - 13:04
(29) Какие у тебя настройки в FileZila ?
Может стоит ПассивноеСоединение
   Olga1c8
 
31 - 30.05.18 - 13:06
(30) "Использовать внешний IP адрес сервера"
   Olga1c8
 
32 - 30.05.18 - 13:07
вы хотите сказать что вновь созданному каталогу нужно снова давать полные права?
   Olga1c8
 
33 - 30.05.18 - 13:10
(30) а! режим передачи стоит Пассивный, да.
 
 
   Olga1c8
 
34 - 30.05.18 - 13:13
Короче в каталоге upload нормально работает, а во вложенном уже не работает.
   Olga1c8
 
35 - 30.05.18 - 13:19
Я в настройках поставила активный, и все равно могу создавать файлы и папки во вложенном каталоге. а из 1с ругается.
   Cool_Profi
 
36 - 30.05.18 - 13:27
(35) Сколько можно повторять... К админу и пусть логи смотрит, что происходит...
   Olga1c8
 
37 - 30.05.18 - 13:43
(36) Статус:    Соединение установлено, ожидание приглашения...
Статус:    Небезопасный сервер, не поддерживает FTP через TLS.
Статус:    Сервер не поддерживает символы не ASCII.
Статус:    Авторизовались
Статус:    Получение списка каталогов "/upload/import_files"...
Статус:    Список каталогов "/upload/import_files" извлечен
   Olga1c8
 
38 - 30.05.18 - 19:40
Все, я его победила.
При каждом проходе по циклу массива файлов я ставила "УстановитьТекущийКаталог", а ему это сильно не нравилось. Я оставила этот метод перед циклом, он один раз устанавливается. А файлы записывала указывая полный путь.
Раньше было так: Соединение.Записать(НайденныйФайл.ПолноеИмя,НайденныйФайл.Имя);
А теперь так: Соединение.Записать(НайденныйФайл.ПолноеИмя,ТекКаталог +"/"+НайденныйФайл.Имя);
где ТекКаталог это Полный путь каталогов на сервере фтп. Таким образом без УстановитьТекущийКаталог, файлы записывались в нужные каталоги. Которые в свою очередь тоже создаются методом "СоздатьКаталог" таким образом: Соединение.СоздатьКаталог(ТекКаталог+НайденныйФайл.Имя);
   Воронеж2019
 
39 - 30.05.18 - 20:41
Ольга идёмте к нам на форум ( странно чего меня не банят) https://apdate.by/forum/
   Franchiser
 
40 - 31.05.18 - 01:00
(38) молодец


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует