Имя: Пароль:
1C
1С v8
Работа из 1с с ФТП
0 SVVS12
 
12.08.12
02:09
Нижеприведенный код (запись файла с диска пользователя на фтп) успешно работал в файловом режиме 1с. При переводе на клиент-серверный режим выдает ошибку ({Документ.ЗаказНаПроизводство2.Форма.ФормаДокумента.Форма(1539)}: Ошибка при вызове метода контекста (Записать)
            Соединение.Записать(ИФФ,ИмяФайлаFTP);
по причине:
Файл не обнаружен 'W:/Путь к файлу /Рисунок.jpg')

ГДЕ ОШИБКА?? ЧТО ДЕЛАТЬ??

/////////////////////////////
&НаКлиенте
Процедура ЗагрузитьНаFTP(Команда)
         ТС = Элементы.Документация1.ТекущиеДанные;
                   СохранитьФайл(ТС.ФайлДокумента,ТС.ПутьКДокументу);
         

КонецПроцедуры



Процедура СохранитьФайл(ФД,ИФФ)
             ИмяФайлаFTP= СокрЛП(Константы.ПутьКДокументацииПоЗаказамНаFTP.Получить())+"/Order"+Объект.Номер+"_"+ФД;
             Соединение = ВыполнитьFTPПодключениеКСерверуВнешнегоХранилища();
            Соединение.Записать(ИФФ,ИмяФайлаFTP);
           
         КонецПроцедуры


Функция ВыполнитьFTPПодключениеКСерверуВнешнегоХранилища() Экспорт
   
   ИмяFTPСервера = СокрЛП(Константы.ПутьВнешнегоХранилища.Получить());
   Если ПустаяСтрока(ИмяFTPСервера) Тогда
       Возврат Неопределено;
   КонецЕсли;
   
   ПользовательFTPСоединения = СокрЛП(Константы.ПользовательВнешнегоХранилища.Получить());
   ПарольFTPСоединения = СокрЛП(Константы.ПарольВнешнегоХранилища.Получить());
   Попытка
       Соединение = Новый FTPСоединение(ИмяFTPСервера, ,
       ПользовательFTPСоединения, ПарольFTPСоединения, ,Истина);
   Исключение
       Сообщить("Ошибка при подключении к FTP : " + ИмяFTPСервера + " ! " + ОписаниеОшибки());
       Возврат Неопределено;
   КонецПопытки;
   Возврат Соединение;
   
КонецФункции
1 Web00001
 
12.08.12
02:19
На первый взляд все нормально, дурацкий вопрос но все таки спрошу, в отладчике при остановке по ошибке, переменные ТС.ФайлДокумента,ТС.ПутьКДокументу что содержат?
2 SVVS12
 
12.08.12
02:23
Web00001

ТС.ФайлДокумента=Рисунок.jpg
ТС.ПутьКДокументу =W:/Путь к файлу /Рисунок.jpg

Все как должно быть
3 Азазелло
 
12.08.12
03:06
(0) )) Классика жанра при переходе с файлового варианта на клиент-серверный. И на клиент-серверное программирование вцелом.
У тебя контекст исполнения СохранитьФайл(ФД,ИФФ) _серверный_. А файлы ты пытаешься передать с клиента. А сервер ни сном ни духом, что там у клиента на его диске W находится.

Тебе нужно сначала файл с клиента запульнуть на сервер, а оттуда уже на фтп выкладывать.
4 SVVS12
 
12.08.12
03:25
(3) Спасибо!
5 SVVS12
 
12.08.12
15:41
Еще раз спасибо, Азазелло, стыдно быть двоечником.

Записать на фтп получилось, на сервер файл закинул так:
&НаКлиенте
Процедура ЗагрузитьНаFTP(Команда)
                 
   Файл = Новый ДвоичныеДанные(ПутьКДокументу);
   Адрес=ПоместитьВоВременноеХранилище(Файл);
             
    СохранитьФайл(Адрес,ФайлДокумента);
   
КонецПроцедуры

&НаСервере
Процедура СохранитьФайл(Адрес,ФД)
   ФайлИзХранилища = ПолучитьИзВременногоХранилища(Адрес);
   Путь = КаталогВременныхФайлов()+ФД;
               
       ФайлИзХранилища.Записать(Путь);
   
           
   
           
КонецПроцедуры
6 Азазелло
 
12.08.12
15:46
(5) Да не за что, сам тоже в свое время на этом спотыкался )
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан