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