&НаСервере
функция ПоказатьФайлНаСервере(текДан)
перем табДок, СпособОткрытияФайла;
менеджерзаписи = РегистрыСведений.ФайловоеХранилище.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(менеджерзаписи,текДан);
менеджерзаписи.Прочитать();
Если менеджерзаписи.Выбран() тогда
тз = "ВЫБРАТЬ
| СпособыОткрытияФайлов.ТипДанныхОтображения КАК ТипДанныхОтображения,
| СпособыОткрытияФайлов.СпособОткрытияФайла КАК СпособОткрытияФайла
|ИЗ
| РегистрСведений.СпособыОткрытияФайлов КАК СпособыОткрытияФайлов
|ГДЕ
| СпособыОткрытияФайлов.ТипДанныхОтображения ПОДОБНО &ТипДанныхОтображения" ;
з = новый запрос (тз);
з.УстановитьПараметр("ТипДанныхОтображения",менеджерзаписи.РасширениеФайла);
рез = з.Выполнить();
Если не рез.Пустой() тогда
выборка = рез.Выбрать();
выборка.Следующий();
СпособОткрытияФайла = выборка.СпособОткрытияФайла;
иначе
//СпособОткрытияФайла = Перечисления.СпособыОткрытияФайлов.КакТаблица
возврат неопределено;
КонецЕсли;
Если СпособОткрытияФайла = Перечисления.СпособыОткрытияФайлов.КакТаблица тогда
табДок = новый ТабличныйДокумент;
иначе
табДок = новый ТекстовыйДокумент;
КонецЕсли;
текДанныеФайла = менеджерзаписи.ЗагруженныеДанные.Получить();
имяВрем = ПолучитьИмяВременногоФайла(менеджерзаписи.РасширениеФайла);
текДанныеФайла.Записать(имяВрем);
табДок.Прочитать(имяВрем);
табДок.ИспользуемоеИмяФайла = менеджерзаписи.ИмяФайла;
возврат табДок;
КонецЕсли;
возврат неопределено;
КонецФункции
&НаКлиенте
Процедура ПоказатьФайл(Команда)
текДан = Элементы.Список.ТекущаяСтрока;
текДанные = Элементы.Список.ТекущиеДанные;
если текДан<>неопределено тогда
ДанныеФайла = получитьФайлИстории(текДан);
Если ДанныеФайла <> Неопределено тогда
списокКнопокВопроса = новый СписокЗначений ();
списокКнопокВопроса.Добавить("Показать","Показать");
списокКнопокВопроса.Добавить("Скачать","Скачать");
списокКнопокВопроса.Добавить("Отмена","Отмена");
оповещение = новый ОписаниеОповещения ("ОбработатьОтветНаВопрос",ЭтотОбъект,ДанныеФайла);
ПоказатьВопрос(оповещение,"Выберите действие",списокКнопокВопроса,30,"Показать","Что хотите сделать?","Отмена");
иначе
ПоказатьПредупреждение(,"данные не найдены");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
процедура ОбработатьОтветНаВопрос (РезультатВопроса,ДополнительныеПараметры) экспорт
текДан = Элементы.Список.ТекущаяСтрока;
текДанные = Элементы.Список.ТекущиеДанные;
Если РезультатВопроса = "Показать" тогда
табДок = ПоказатьФайлНаСервере(текДан);
Если табДок<> неопределено тогда
табДок.Показать("Наш файл: "+текДанные.ИмяФайла);
иначе
ПоказатьПредупреждение(,"Невозможно отобразить файл этого типа "+ Строка(текДанные.РасширениеФайла),20);
КонецЕсли;
ИначеЕсли РезультатВопроса = "Скачать" тогда
времХранилище = ПоместитьВоВременноеХранилище(ДополнительныеПараметры,ЭтаФорма.УникальныйИдентификатор);
НачатьПолучениеФайлаССервера(времХранилище,текДанные.ИмяФайла);
иначе
возврат;
КонецЕсли;
КонецПроцедуры
функция получитьФайлИстории (текСтр)
мз = РегистрыСведений.ФайловоеХранилище.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(мз,текСтр);
мз.Прочитать();
если мз.Выбран() тогда
возврат мз.ЗагруженныеДанные.Получить();
иначе
возврат неопределено;
КонецЕсли;
КонецФункции