Имя: Пароль:
1C
1С v8
FTPСоединение.Записать() не записывает
,
0 IKSparrow
 
03.10.14
10:37
Не срабатывает функция записи файла на ftp. И самое поганое никаких ошибок или диагностических сообщений. Строчку кода проходит, тупит некоторое время и... все. Доступ на FTP полный, соединение исправно создается, прокся подключается идеально, файрволлы все отключены, антивирусы выключены. Куда ещё копать можно?
1 IKSparrow
 
03.10.14
10:37
В логах FTP тоже ничего криминального нет.
2 Victor111
 
03.10.14
10:44
вы так передаете файлы на запись?
FTPСоеденение.Записать(файл.ПолноеИмя,файл.Имя);
3 IKSparrow
 
03.10.14
10:47
(2) Точнее так: FTPКоннектор.Записать("D:\Out\"+СокрЛП(Узел.Код)+".xml", СокрЛП(Узел.Код)+".xml");

К тому моменту у меня уже открыт каталог, куда я скидываю данные:
FTPКоннектор.УстановитьТекущийКаталог(Настройки.КаталогОбмена);
4 IKSparrow
 
03.10.14
10:52
FTPКоннектор.УстановитьТекущийКаталог(Настройки.КаталогОбмена); - показывает, что текущий каталог установлен корректно.
5 zva
 
03.10.14
10:57
а руками на ftp файл с этим именем создать можно?
6 IKSparrow
 
03.10.14
10:58
(5) Без проблем сейчас скопировал туда файлик исходный. Руками.
7 IKSparrow
 
03.10.14
11:02
Полный код такой. Как бы все элементарно по СП:

        Если НЕ ПроверитьFTPСоединение(Настройки) Тогда
            ЗаписьЖурналаРегистрации(
                "#РегламентныеЗадания",
                УровеньЖурналаРегистрации.Ошибка,
                Метаданные.ОбщиеМодули.до_МодульРегламентныхЗаданий,
                "Если НЕ ПроверитьFTPСоединение(Настройки) Тогда",
                ОписаниеОшибки());            
            ВызватьИсключение("FTP");
        КонецЕсли;
        Попытка
        
            Прокси = Новый ИнтернетПрокси(ИСТИНА);
            Прокси.Пользователь = "************";
            Прокси.Пароль = ""************";
            Прокси.Установить("ftp", ""************", 8080);
        
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Ложь;
        КонецПопытки;
        
        Попытка
            FTPКоннектор = Новый FTPСоединение(
                Настройки.АдресБазы,
                ?(ЗначениеЗаполнено(Настройки.FTPПорт), Настройки.FTPПорт, 21),
                Настройки.FTPЛогин,
                Настройки.FTPПароль,
                Прокси,
                ?(Настройки.FTPРежим = 2, Истина, Ложь),
                25);
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Ложь;
        КонецПопытки;
        
        Попытка
            FTPКоннектор.УстановитьТекущийКаталог(Настройки.КаталогОбмена);
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Ложь;
        КонецПопытки;
        FTPКоннектор.Записать("D:\Out\"+СокрЛП(Узел.Код)+".xml", FTPКоннектор.ТекущийКаталог()+СокрЛП(Узел.Код)+".xml");
    КонецЕсли;
8 zva
 
03.10.14
11:04
это на клиенте или на сервере? и база файловая или клиент-серверная?
9 IKSparrow
 
03.10.14
11:27
(8) На сервере, база клиент-серверная.
10 IKSparrow
 
03.10.14
11:27
Файлик для записи на FTP лежит где надо :) Это проверил в первую очередь :)
11 pavelul73
 
03.10.14
11:28
Попробуй FTPКоннектор.Записать обернуть в попытку и в исключение добавить Сообщить(ОписаниеОшибки());
12 oleg_km
 
03.10.14
11:32
(11) А лучше ПодробноеОписание(ИнформацияОбОшибке())
13 IKSparrow
 
03.10.14
11:50
(11)(12) Не, вообще никаких ошибок :(((((
14 zva
 
03.10.14
12:49
<<На сервере, база клиент-серверная. Файлик для записи на FTP лежит где надо :) Это проверил в первую очередь :)>>
Т.е. у учетной записи, под которой запушена служба сервера 1С есть права на каталог на сервере D:\Out\...
15 zva
 
03.10.14
12:55
и нет такого, что файл еще пишется на диск, когда его пытаются скопировать по ftp
16 IKSparrow
 
03.10.14
12:58
(14) Да, есть, она вообще админская.
(15) Вот только что проверил эту версию. Увы, не катит. Файл уже есть на диске. На FTP так же не пишется.
17 zva
 
03.10.14
13:03
Файл = Файл.Новый(("D:\Out\"+СокрЛП(Узел.Код)+".xml");
Файл.Существует() истину возвращает?
18 IKSparrow
 
03.10.14
16:28
(17) Истина. Сетку проверили с админами - преград нет. В общем, реализую механизм через облако. Но неприятно, блин. А главное необъяснимо. Ладно бы там кода было стотысячстрок. А там всего то ничего.
19 vlandev
 
03.10.14
16:40
Если ftp сервер под вашим контролем включите там максимальное логирование и посмотрите , какие команды он получает от 1С , возможно это прояснит ситуацию.
20 Зеленый пень
 
03.10.14
16:45
";" нет в пароле?
А то у 1С зафиксирована ошибка:
При работе с объектами HTTPСоединение, FTPСоединение подключение по протоколам http и ftp не выполняется, если пароль для авторизации содержит символ ";".