1.
panihinnv
16
02.09.19 13:04
Сейчас в теме
Требуется сформировать файл и сохранить его на клиенте из браузера.
При работе через обычное приложение все хорошо работает, а при работе через браузер не могу понять как создать каталог методом НачатьСозданиеКаталога(), и сохранить в него файл?
&НаКлиенте
Процедура Сформировать(Команда)
ДанныеФайла = СформироватьФайлСервер();
ЭтоВебКлиент = Ложь;
Если ДанныеФайла <> Неопределено Тогда
#Если ВебКлиент Тогда
Результат = НесинхронноУстановитьПриложенияДляРаботыСФайламиИНачатьРаботатьСФайлами();
#Иначе
СоздатьКаталог("C:\1C\");
Описание = Новый ОписаниеПередаваемогоФайла("C:\1C\"+ДанныеФайла.ИмяФайла, ДанныеФайла.Адрес);
МассивОписаний = Новый Массив;
МассивОписаний.Добавить(Описание);
ПолучитьФайлы(МассивОписаний,,,Ложь);
ЗапуститьПриложение("C:\1C\");
#КонецЕсли
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СформироватьФайлСервер()
ПапкаПользователя = "C:\" + Пользователи.ТекущийПользователь().ИдентификаторПользователяИБ + "\";
УдалитьФайлы(ПапкаПользователя);
СоздатьКаталог(ПапкаПользователя);
XML = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("windows-1251", "1.0", Истина, Ложь, Символы.Таб);
ИмяФайла = Строка("MBKI_FL_.xml");
XML.ОткрытьФайл(ПапкаПользователя + ИмяФайла, ПараметрыЗаписиXML);
XML.ЗаписатьОбъявлениеXML();
XML.ЗаписатьНачалоЭлемента("TOBKI");
XML.ЗаписатьНачалоЭлемента("IDSchema");
XML.ЗаписатьТекст("2");
XML.ЗаписатьКонецЭлемента();
XML.Закрыть();
Двоичное = Новый ДвоичныеДанные(ПапкаПользователя + ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор);
УдалитьФайлы(ПапкаПользователя);
СтруктураДанных = Новый Структура("Адрес, ИмяФайла", Адрес, ИмяФайла);
Возврат СтруктураДанных;
КонецФункции
&наКлиенте
Функция НесинхронноУстановитьПриложенияДляРаботыСФайламиИНачатьРаботатьСФайлами()
ОповещениеЗавершенияПодключенияРасширенияРаботыСФайлами = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект,Ложь) ;
НачатьПодключениеРасширенияРаботыСФайлами(ОповещениеЗавершенияПодключенияРасширенияРаботыСФайлами);
КонецФункции
&НаКлиенте
Процедура НачатьПодключениеРасширенияРаботыСФайламиЗавершение(Подключено,ЭтоУжеВтораяПопытка) Экспорт
Если НЕ Подключено Тогда
Если ЭтоУжеВтораяПопытка = Истина Тогда
Сообщить("Не удалось подготовить расширение работы с файлами, Обратитесь к разработчику");
Возврат;
КонецЕсли;
ОповещениеЗавершенияУстановкиРасширенияРаботыСФайлами = новый ОписаниеОповещения("НачатьУстановкуРасширенияРаботыСФайламиЗавершение", ЭтотОбъект);
НачатьУстановкуРасширенияРаботыСФайлами(ОповещениеЗавершенияУстановкиРасширенияРаботыСФайлами);
Иначе
// СформироватьФайлСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьУстановкуРасширенияРаботыСФайламиЗавершение(ОписаниеОповещения) Экспорт
ОповещениеЗавершенияПодключенияРасширенияРаботыСФайлами = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект,Истина) ;
НачатьПодключениеРасширенияРаботыСФайлами(ОповещениеЗавершенияПодключенияРасширенияРаботыСФайлами);
КонецПроцедуры