|
Ошибка доступа к файлу | ☑ | ||
---|---|---|---|---|
0
As-Pin
08.10.13
✎
09:37
|
Есть процедурка, выполняется на сервере, необходимо с фтп выгрузить файл с картинкой и потом записать его в справочник файлы, ошибка доступа к файлу, потому, что выполняется на сервере, как же мне быть, есть ли способ с фтп получить двоичные данные файла???
&НаСервере Процедура ПроверкаФайла(ЭлементС,КартинкаМ, КартинкаБ); Путь = "/isoft74.ru/docs"; Соединение = УстановитьСоединение(); ПутьКартинкаМ = Путь+КартинкаМ; ПутьКартинкаБ = Путь+КартинкаБ; Расширение = КартинкаМ; Пока Найти(Расширение, ".")>0 Цикл Расширение = Сред(Расширение,Найти(Расширение, ".")+1); КонецЦикла; Пока Найти(КартинкаМ, "/")>0 Цикл КартинкаМ = Сред(КартинкаМ,Найти(КартинкаМ, "/")+1); КонецЦикла; Картинка = Лев(КартинкаМ, Найти(КартинкаМ, ".")-1); Файл = Новый Картинка; Файл.Записать("C:/temp.file"); Соединение.Получить(ПутьКартинкаМ,"C:/temp.file"); ДвоичДанные = Новый ДвоичныеДанные("C:/temp.file"); //ДвоичДанные = ПолучитьФайлСФТП(); Если ЗначениеЗаполнено(ЭлементС.ФайлКартинки) Тогда //Заменяем файл ОбъектВерсия = ЭлементС.ФайлКартинки.ТекущаяВерсия.ПолучитьОбъект(); ОбъектВерсия.ФайлХранилище = Новый ХранилищеЗначения(ДвоичДанные); ОбъектВерсия.Записать(); ИначеЕсли Справочники.Файлы.НайтиПоНаименованию(Картинка).Наименование=Картинка Тогда ОбъектВерсия = Справочники.Файлы.НайтиПоНаименованию(Картинка).ТекущаяВерсия.ПолучитьОбъект(); ОбъектВерсия.ФайлХранилище = Новый ХранилищеЗначения(ДвоичДанные); ОбъектВерсия.Записать(); ЭлементС.ФайлКартинки = Справочники.Файлы.НайтиПоНаименованию(Картинка); Иначе //создаем новый в справочнике файлы Новыйфайл = Справочники.Файлы.СоздатьЭлемент(); Новыйфайл.Автор = Справочники.Пользователи.НайтиПоНаименованию("<Не указан>"); Новыйфайл.ВладелецФайла = Элементы.СправочникПапкиФайлов.ТекущаяСтрока; Новыйфайл.Наименование = Картинка; Новыйфайл.ДатаСоздания = ТекущаяДата(); //Новыйфайл.ИндексКартинки = ""; //Новыйфайл.Описание = ""; //Новыйфайл.Подписан = ""; Новыйфайл.ПолноеНаименование = Картинка; Новыйфайл.ТекущаяВерсияАвтор = Справочники.Пользователи.НайтиПоНаименованию("<Не указан>"); Новыйфайл.ТекущаяВерсияДатаСоздания = ТекущаяДата(); НовыйФайл.ТекущаяВерсияНомерВерсии = 1; Новыйфайл.ТекущаяВерсияРазмер = ДвоичДанные.Размер(); Новыйфайл.ТекущаяВерсияРасширение = Расширение; Новыйфайл.Записать(); //создаем версию файла НоваяВерсия = Справочники.ВерсииФайлов.СоздатьЭлемент(); НоваяВерсия.Автор = Справочники.Пользователи.НайтиПоНаименованию("<Не указан>"); НоваяВерсия.ДатаСоздания = ТекущаяДата(); НоваяВерсия.НомерВерсии = 1; НоваяВерсия.Наименование = Картинка; НоваяВерсия.ПолноеНаименование = Картинка; НоваяВерсия.Размер = ДвоичДанные.Размер(); НоваяВерсия.Расширение = Расширение; НоваяВерсия.ФайлХранилище = Новый ХранилищеЗначения(ДвоичДанные); НоваяВерсия.Владелец = Справочники.Файлы.НайтиПоНаименованию(Картинка); НоваяВерсия.Записать(); //записываем новую версию в наш файл Новыйфайл = Справочники.Файлы.НайтиПоНаименованию(Картинка).ПолучитьОбъект(); Новыйфайл.ТекущаяВерсия = Справочники.ВерсииФайлов.НайтиПоНаименованию(Картинка); Новыйфайл.Записать(); //ЭлементС.ФайлКартинки = Справочники.Файлы.НайтиПоНаименованию(Картинка); КонецЕсли; //ЭлементС.Записать(); УдалитьФайлы("temp.file"); КонецПроцедуры |
|||
1
hhhh
08.10.13
✎
09:45
|
ну путь
Файл.Записать("C:/temp.file"); поменять на другой. Вряд ли на сервере он доступен для 1с. |
|||
2
As-Pin
08.10.13
✎
10:21
|
ставил просто
Файл.Записать("temp.file"); по идее создается в папке с платформой, не помогло Еще новичок в этом деле, база хранится на сервере и путь к ней ws="http://192.168.0.2/isoft" на локальной базе с моего компа, Файл.Записать("temp.file"); нормально работает, а там пишет ошибка доступа, видел решение запустить от администратора, но как удаленно это сделать то :D , или у меня только один способ, запускать обработку на самом сервере? |
|||
3
Wobland
08.10.13
✎
10:22
|
получи временный каталог
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |