Имя: Пароль:
1C
1С v8
Веб клиент Работа с файлами без установки расширения для работы с файлами
0 tank68
 
26.06.15
16:53
Как получить файл который находится на сервере по известному пути на клиентскую машину клиента без установки расширения.
1 tank68
 
26.06.15
16:55
&НаКлиенте
Процедура ПрикрепленныеФайлыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    Попытка
        ТекСтрока = Элемент.ТекущиеДанные;
        ФайлНаСервере = ТекСтрока.Файл;         
        Адрес = ПолучитьФайлНаСервере(ФайлНаСервере);
        ДвДанн=ПолучитьИзВременногоХранилища(Адрес);
        ПолучитьФайл(ДвДанн, ФайлНаСервере, Истина);
    Исключение
    КонецПопытки;

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

&НаСервере
Функция ПолучитьФайлНаСервере(ФайлНаСервере)
    
    ИмяСсылкиПолное = ПолучитьНавигационнуюСсылку(Объект.Ссылка);  
    ИмяСсылки = Прав(ИмяСсылкиПолное, СтрДлина(ИмяСсылкиПолное)-Найти(ИмяСсылкиПолное,"="));
    КаталогКонстанта = ПолучитьКаталогИзКонстанты();
    КаталогЛогФайлов = КаталогКонстанта+"\"+СокрЛП(Формат(Объект.Дата,"ДФ=""гггг\MM"""))+"\"+ИмяСсылки;
    
    ФайлИсходный = КаталогЛогФайлов+"\"+ФайлНаСервере;

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

&НаСервереБезКонтекста
Функция ПолучитьКаталогИзКонстанты ()
    
    Возврат Константы.КаталогХраненияФайлов.Получить();
    
КонецФункции
2 tank68
 
26.06.15
17:00
Когда на сервере помещается файл во временное хранилище на веб клиенте пишет ошибку
HTTP: Not found
Ошибка при выполнении запроса GET к ресурсу /e1cib/files:
по причине:
Неправильный путь к файлу ''
Не пойму что упускаю или может есть иные варианты получить файл с сервера без установки расширения
3 tank68
 
17.07.15
12:21
up
4 OnCheck
 
17.07.15
12:45
Константы.КаталогХраненияФайлов пустая?
5 tank68
 
17.07.15
15:42
Нашел была лишняя процедура

Процедура ПрикрепленныеФайлыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    Попытка
        ТекСтрока = Элемент.ТекущиеДанные;
        ФайлНаСервере = ТекСтрока.Файл;        
        Адрес = ПолучитьФайлНаСервере(ФайлНаСервере);
        ПолучитьФайл(Адрес, ФайлНаСервере, Истина);
    Исключение
    КонецПопытки;

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

&НаСервере
Функция ПолучитьФайлНаСервере(ФайлНаСервере)
    
    ИмяСсылкиПолное = ПолучитьНавигационнуюСсылку(Объект.Ссылка);  
    ИмяСсылки = Прав(ИмяСсылкиПолное, СтрДлина(ИмяСсылкиПолное)-Найти(ИмяСсылкиПолное,"="));
    КаталогКонстанта = ПолучитьКаталогИзКонстанты();
    КаталогЛогФайлов = КаталогКонстанта+"\"+СокрЛП(Формат(Объект.Дата,"ДФ=""гггг\MM"""))+"\"+ИмяСсылки;
    
    ФайлИсходный = КаталогЛогФайлов+"\"+ФайлНаСервере;

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

&НаСервереБезКонтекста
Функция ПолучитьКаталогИзКонстанты ()
    
    Возврат Константы.КаталогХраненияФайлов.Получить();
    
КонецФункции
6 tank68
 
17.07.15
15:43
Лишней была в предыдущем коде
ДвДанн=ПолучитьИзВременногоХранилища(Адрес);
7 tank68
 
17.07.15
15:46
Если кому пригодиться чтобы прикрепить файлы не устанавливая приложение для работы с файлами работает следующий код

&НаСервере
Процедура СохранитьФайл(ФайлЗагрузки,Рекв1)
        
    ИмяСсылкиПолное = ПолучитьНавигационнуюСсылку(Объект.Ссылка);  
    ИмяСсылки = Прав(ИмяСсылкиПолное, СтрДлина(ИмяСсылкиПолное)-Найти(ИмяСсылкиПолное,"="));
    ИмяФайла = Прав(Рекв1,5);
    Расшир = Прав(ИмяФайла, СтрДлина(ИмяФайла)-Найти(ИмяФайла,"."));
    КаталогЛогФайлов = Константы.КаталогХраненияФайлов.Получить()+"\"+СокрЛП(Формат(Объект.Дата,"ДФ=""гггг\MM"""))+"\"+ИмяСсылки+"\";
    КаталогНаДиске = Новый Файл(КаталогЛогФайлов);
    Если Не КаталогНаДиске.Существует() Тогда
        СоздатьКаталог(КаталогЛогФайлов);
    КонецЕсли;
    НовоеИмя = "Scandoc_"+СокрЛП(Формат(ТекущаяДата(),"ДФ=""гг_MM_dd-hh_mm_ss"""))+"."+Расшир;
        
    ФайлИзХранилища = ПолучитьИзВременногоХранилища(Строка(ФайлЗагрузки));
    ФайлИзХранилища.Записать(КаталогЛогФайлов+НовоеИмя);
    //КопироватьФайл(ФайлИзХранилища,Путь+НовоеИмя);
    СуществованиеФайла = Новый Файл(КаталогЛогФайлов+НовоеИмя);
    ЕстьФайл = СуществованиеФайла.Существует();
    Если ЕстьФайл Тогда
        Сообщить(НовоеИмя);
    Иначе
        Сообщить(ЕстьФайл);  
    КонецЕсли;
    
    НовСтрока = Объект.ПрикрепленныеФайлы.Добавить();
    НовСтрока.Файл = НовоеИмя;
    НовСтрока.Расширение = Расшир;
    НовСтрока.ДатаЗагрузки = ТекущаяДата();
    НовСтрока.Пользователь = ПараметрыСеанса.ТекущийПользователь;    
    
    Об = РеквизитФормыВЗначение("Объект");
    Об.Записать();
    ЗначениеВРеквизитФормы(Об, "Объект");     
    
КонецПроцедуры

&НаКлиенте
Процедура ПрикрепитьФайл(Команда)
    
    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда           
        Сообщить(""+ТекущаяДата()+" Для прикрепления файлов нужно Авансовый отчет записать!!!");
        Возврат;        
    КонецЕсли;
    ИмяФайла = "";
    ПутьФайла = "";
    //Вызываем Диалоговое окно и помещаем файл Картинки из локальной файловой системы во временное хранилище
    Если ПоместитьФайл(ПутьФайла, , ИмяФайла, Истина)= Истина Тогда
        Рекв1 = ИмяФайла;
        //в строковый реквизит ФОТО нашей формы сохраняем ссылку на Картинку во временном хранилище
        ФайлЗагрузки = ПутьФайла;
        //для создания нового элемента в Справонике Файлы и записи Картинки в его реквизит Файл
        //переходим на сервер с помощью вызова серверной процедуры
        //РазложитьСтрокуВМассивПодстрок(Рекв1);
        
        СохранитьФайл(ФайлЗагрузки,Рекв1);
        
    КонецЕсли;
    //условие ЕСЛИ нужно для того, чтобы если пользователь отказался от выбора файла
    //мы не вызывали серверную процедуру УстановитьКартинку()
    ОбновитьОтображениеДокумента();
        
КонецПроцедуры
8 tank68
 
17.07.15
15:53
Спасибо всем активным пользователям!!! )))
2 + 2 = 3.9999999999999999999999999999999...