Имя: Пароль:
1C
1С v8
Как в Вэб клиенте сохранить в файл без расширения работы с файлами?
0 Patriot1C
 
16.12.15
15:37
Пишу код:
Адрес = ЗаписатьJSONвХранилище();
  ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаСохраненияФайлов", ЭтаФорма);
    Файл = Новый ОписаниеПередаваемогоФайла("Настройки.json", Адрес);
    ПолучаемыеФайлы = Новый Массив;
    ПолучаемыеФайлы.Добавить(Файл);
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    НачатьПолучениеФайлов(ОписаниеОповещения, ПолучаемыеФайлы, ДиалогОткрытияФайла, Истина);

Но в вэб-клиенте все равно требует установить РасширениеРаботыСФайлами.
1 Phace
 
16.12.15
15:41
Какбэ "РасширениеРаботыСФайлами" и нужно для работы с файлами в веб-клиенте, изврат конечно возможен, но зачем нужна машина без руля?
2 Patriot1C
 
16.12.15
15:45
(1) Загрузка проходит на ура без него:
&НаКлиенте
Процедура ЗагрузитьНастройку(Команда)
    ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаЗагрузкиФайлов", ЭтаФорма);
    НачатьПомещениеФайла(ОписаниеОповещения,,,Истина);
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаЗагрузкиФайлов( Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
3 butterbean
 
16.12.15
15:49
не используй ДиалогВыбораФайла
4 Phace
 
16.12.15
15:49
(2) Возможно это упущение 1С :)

В БСП (читай в типовых) все делается через это расширение:

    #Если ВебКлиент Тогда
        Оповещение = Новый ОписаниеОповещения("ПрисоединитьФайлыВВводНового", ЭтотОбъект);
        ТекстСообщения = НСтр("ru = 'Для работы с файлами необходимо установить расширение работы с файлами.'");
        ОбщегоНазначенияКлиент.ПроверитьРасширениеРаботыСФайламиПодключено(Оповещение, ТекстСообщения);
        
    #Иначе  
        ПрисоединитьФайлыВыполнить();
    #КонецЕсли
5 Patriot1C
 
16.12.15
16:26
(4) То есть без Расширения 1С не сможет сохранить в локальный файл?
6 butterbean
 
16.12.15
16:30
(5) ты через ПолучитьФайл() не пробовал??
7 ukolabrother
 
16.12.15
16:34
в режиме использования синхронных вызовов и внеш. компонент работает в вебклиенте без подключения расширения вот так

&НаКлиенте
Процедура ЗагрузитьФайлКлиентФрагмент(Знач ТипФайла)
    
    НачатьПомещениеФайла(Новый ОписаниеОповещения("ЗагрузитьФайлКлиентФрагментЗавершение", ЭтотОбъект, Новый Структура("ТипФайла", ТипФайла)));

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

&НаКлиенте
Процедура ЗагрузитьФайлКлиентФрагментЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    
    Если Результат Тогда
        ВыбранФайл(Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры);
    КонецЕсли;

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

&НаКлиенте
Процедура ВыбранФайл(Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)    
        Файл = Новый Файл(ВыбранноеИмяФайла);
        ИмяФайла = Файл.Имя;        
        ЭтаФорма[ДополнительныеПараметры.ТипФайла] = ИмяФайла;
        Результат = ЗаписатьФайлВБДНаСервере(Адрес, ИмяФайла, ДополнительныеПараметры.ТипФайла);    
КонецПроцедуры
8 ukolabrother
 
16.12.15
16:36
и выгрузка в локальную папку:

&НаКлиенте
Процедура ВыгрузитьФайлКлиент(ИмяФайла, ТипФайла)
    Адрес = ПолучитьФайлНаСервере(ИмяФайла, ТипФайла);
    Если НЕ Адрес = Неопределено Тогда
        Данные = Новый ОписаниеПередаваемогоФайла(ИмяФайла, Адрес);
        ПолучаемыеФайлы = Новый Массив;
        ПолучаемыеФайлы.Добавить(Данные);
        
        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
        ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
        Расширение = Прав(ИмяФайла,СтрДлина(ИмяФайла)-СтрНайти(ИмяФайла, "."));
        ДиалогОткрытияФайла.Фильтр = "(*."+Расширение+")|*."+Расширение+"";        
        ДиалогОткрытияФайла.Расширение = Расширение;
        
        НачатьПолучениеФайлов(Новый ОписаниеОповещения("СохранитьФайлКлиентЗавершение",ЭтаФорма), ПолучаемыеФайлы, ДиалогОткрытияФайла ,Истина);
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура СохранитьФайлКлиентЗавершение(ПолученныеФайлы, ДополнительныеПараметры) Экспорт
    
КонецПроцедуры
9 Patriot1C
 
16.12.15
18:19
(6) Пробовал - работает.

А в новомодном режиме асинхронности не работает
и не работает если убрать ДиалогВыбораФайла...
10 Patriot1C
 
16.12.15
18:40
При ПолучитьФайл() в IE диалог сохранения только непонятный.