|
FTP СоздатьКаталог | ☑ | ||
---|---|---|---|---|
0
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с, а каталог создать не могу. Цель: выгруженные файлы для сайта типовой выгрузкой из УТ надо положить на ФТП "как есть" со всеми вложенными папками и картинками. Чего не так? Подскажите пожалуйста, я уже замучилась. |
|||
1
Cool_Profi
29.05.18
✎
14:54
|
А чему равно НайденныйФайл.Имя ?
|
|||
2
Olga1c8
29.05.18
✎
14:57
|
(1) Это имя каталога import_files, который внутри каталога webdata на диске компьютера. в отладчике так: НайденныйФайл.Имя = "import_files"
|
|||
3
Cool_Profi
29.05.18
✎
15:17
|
Ну так права на чтение папки есть, а на создание каталогов нет .
Нужно с разбегу в голову с вертушки админам. Чтобы не выделывались и читали логи. |
|||
4
Cool_Profi
29.05.18
✎
15:17
|
"вертушка" - это, например, "маваши-гери".
|
|||
5
Olga1c8
29.05.18
✎
15:41
|
(3) раз такое подробное разделение прав имеется, то возможно и так. Сказала админам, отпишусь по результату. А еще есть какие-то варианты решения? Или только права могут быть?
|
|||
6
Cool_Profi
29.05.18
✎
15:49
|
(5) Ну так логи нужно смотреть. Наугад сказать нельзя
|
|||
7
Olga1c8
29.05.18
✎
16:13
|
(6) А метод Соединение.НайтиФайлы тоже по этой причине не работает? Там примерно такая же ошибка.
|
|||
8
Franchiser
гуру
29.05.18
✎
16:20
|
||||
9
Franchiser
гуру
29.05.18
✎
16:24
|
Перед СоздатьКаталог() наверно нужно выполнить УстановитьТекущийКаталог()
|
|||
10
Olga1c8
29.05.18
✎
16:36
|
(9) там ведь в коде видно, что я каталог устанавливаю сначала.
|
|||
11
Olga1c8
29.05.18
✎
16:37
|
(8) да, это я гуглила, после этого поста сообщение вывела что текущий каталог действительно устанавливается.
|
|||
12
Olga1c8
30.05.18
✎
10:14
|
Через файлзиллу смотрю, этот каталог создается, а в 1с-ке ругается и дальше выгрузка не идет.
|
|||
13
Franchiser
гуру
30.05.18
✎
10:19
|
Может так:
FTPСоединение.ПассивныйРежим(Ложь); |
|||
14
Olga1c8
30.05.18
✎
11:00
|
Проблема вот в чем: я ж временно убрала строчку где поиск файлов, и сразу же создаю каталог. А если он там есть, то программа ругается. ок, я вернула на родину эту строчку, и проблема у меня теперь в ней.
ЕстьТакаяПапка = Соединение.НайтиФайлы(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/"),НайденныйФайл.Имя).Количество() > 0; ругается, говорит Ошибка при вызове метода контекста (НайтиФайлы) по причине: Ошибка аутентификации при доступе к ресурсу: ftp://185.41.162.114:21 Access denied to remote resource |
|||
15
Olga1c8
30.05.18
✎
11:05
|
Может удалить все перед выгрузкой?
|
|||
16
hhhh
30.05.18
✎
11:05
|
(14) выкинь "/", оно вроде вредит там
|
|||
17
Franchiser
гуру
30.05.18
✎
11:06
|
(16) Параметры:
<Путь> (обязательный) Тип: Строка. Путь к каталогу, в котором производится поиск. При использовании этой схемы в адресах необходимо указывать прямые слеши '/', а не обратные '\'. Допускается указание полного имени файла (путь + имя). |
|||
18
Franchiser
гуру
30.05.18
✎
11:07
|
Чему равно
НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/") ? |
|||
19
hhhh
30.05.18
✎
11:08
|
(17) вообще в клонце слеш не нужен. Откуда там слеш взялся?
|
|||
20
hhhh
30.05.18
✎
11:08
|
(17) ни прямой, ни обратный.
|
|||
21
Franchiser
гуру
30.05.18
✎
11:10
|
(20) согласен, в конце убери
|
|||
22
Franchiser
гуру
30.05.18
✎
11:11
|
И слеши должны быть не обратные, а прямые
|
|||
23
Franchiser
гуру
30.05.18
✎
11:13
|
Интересно должно быть ftp:// или ftp:\\ ?
|
|||
24
Olga1c8
30.05.18
✎
11:17
|
слэши прямые там, я ж их как раз заменяю. Но попробую убрать сейчас вообще любые.
|
|||
25
Franchiser
гуру
30.05.18
✎
11:19
|
(24) мне кажется нужно убрать только в конце, если убрать все будет каша
|
|||
26
Olga1c8
30.05.18
✎
11:20
|
да, я поняла что в конце) пробую
|
|||
27
Olga1c8
30.05.18
✎
11:31
|
Вобщем я ради эксперимента ту длинную галиматью заменила на простое ЕстьТакаяПапка = Соединение.НайтиФайлы("upload",НайденныйФайл.Имя).Количество() > 0; и оно заработало))) Спасибо, действительно слэш в конце не нужен был) Но теперь другая проблемка вылезла, но по ней меня пока терзают смутные сомнения. Пока я сама с ней поковыряюсь, если не шмогла, то опять к вам обращусь)
|
|||
28
Olga1c8
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, то я могу там внутри и создавать и все такое.... |
|||
29
Olga1c8
30.05.18
✎
13:00
|
блин неправильно написала
Если каталог уже есть на фтп, то он с другой ошибкой вылетает типа Ошибка при вызове метода контекста (НайтиФайлы) вот |
|||
30
Franchiser
гуру
30.05.18
✎
13:04
|
(29) Какие у тебя настройки в FileZila ?
Может стоит ПассивноеСоединение |
|||
31
Olga1c8
30.05.18
✎
13:06
|
(30) "Использовать внешний IP адрес сервера"
|
|||
32
Olga1c8
30.05.18
✎
13:07
|
вы хотите сказать что вновь созданному каталогу нужно снова давать полные права?
|
|||
33
Olga1c8
30.05.18
✎
13:10
|
(30) а! режим передачи стоит Пассивный, да.
|
|||
34
Olga1c8
30.05.18
✎
13:13
|
Короче в каталоге upload нормально работает, а во вложенном уже не работает.
|
|||
35
Olga1c8
30.05.18
✎
13:19
|
Я в настройках поставила активный, и все равно могу создавать файлы и папки во вложенном каталоге. а из 1с ругается.
|
|||
36
Cool_Profi
30.05.18
✎
13:27
|
(35) Сколько можно повторять... К админу и пусть логи смотрит, что происходит...
|
|||
37
Olga1c8
30.05.18
✎
13:43
|
(36) Статус: Соединение установлено, ожидание приглашения...
Статус: Небезопасный сервер, не поддерживает FTP через TLS. Статус: Сервер не поддерживает символы не ASCII. Статус: Авторизовались Статус: Получение списка каталогов "/upload/import_files"... Статус: Список каталогов "/upload/import_files" извлечен |
|||
38
Olga1c8
30.05.18
✎
19:40
|
Все, я его победила.
При каждом проходе по циклу массива файлов я ставила "УстановитьТекущийКаталог", а ему это сильно не нравилось. Я оставила этот метод перед циклом, он один раз устанавливается. А файлы записывала указывая полный путь. Раньше было так: Соединение.Записать(НайденныйФайл.ПолноеИмя,НайденныйФайл.Имя); А теперь так: Соединение.Записать(НайденныйФайл.ПолноеИмя,ТекКаталог +"/"+НайденныйФайл.Имя); где ТекКаталог это Полный путь каталогов на сервере фтп. Таким образом без УстановитьТекущийКаталог, файлы записывались в нужные каталоги. Которые в свою очередь тоже создаются методом "СоздатьКаталог" таким образом: Соединение.СоздатьКаталог(ТекКаталог+НайденныйФайл.Имя); |
|||
39
Воронеж2019
30.05.18
✎
20:41
|
Ольга идёмте к нам на форум ( странно чего меня не банят) https://apdate.by/forum/
|
|||
40
Franchiser
гуру
31.05.18
✎
01:00
|
(38) молодец
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |