Первый вариант &НаКлиенте
Подходит если файл Эксель - это просто несколько колонок с загружаемыми реквизитами. Замечу, этот код не зависит от типа базы, файловая/серверная и требуется наличие экселя только на стороне клиента. В примере файл для загрузки состоит из 2 колонок: "Сотрудник"; "Счет".
&НаКлиенте
Процедура Загрузка(Команда)
Колонки = Новый Массив;
Колонки.Добавить("Сотрудник");
Колонки.Добавить("Счет");
Попытка
ex = ПолучитьCOMобъект("","Excel.Application");
Исключение
Сообщить("Excel Application не создан!!");
Возврат;
КонецПопытки;
Попытка
ex.workbooks.open(Файл,1);
Исключение
Сообщить("Файл перемещен или удален!");
Возврат;
КонецПопытки;
МассивРезультат = Новый Массив;
RCount = ex.ActiveSheet.UsedRange.Rows.Count();
Для j = 2 по RCount цикл
Если СокрЛП(ex.ActiveSheet.Cells(j,1).Value)="" Тогда
Продолжить;
КонецЕсли;
Стр = Новый Структура;
Для i=0 По Колонки.Количество()-1 Цикл
Стр.Вставить(Колонки[i],ex.ActiveSheet.Cells(j,i+1).Value);
КонецЦикла;
МассивРезультат.Добавить(Стр);
КонецЦикла;
ex.workbooks.Close();
ex.quit();
КонецПроцедуры
Второй вариант &НаСервере.
Например, после загрузки вам необходимо выполнить действия с данными на сервере, или на клиенте нет приложения excel. Перед выполнением необходимо скопировать файл во временное хранилище в процедуре &НаКлиенте, а затем сохранить его во временный каталог уже на сервере.
&НаКлиенте
Процедура Загрузка(Команда)
Двоичное = Новый ДвоичныеДанные(ПутьКФайлу);
Адрес = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор);
МассивКолонок = Новый Массив;
МассивКолонок.Добавить("Сотрудник");
МассивКолонок.Добавить("Счет");
ЗагрузкаНаСервере(Адрес, МассивКолонок);
КонецПроцедуры
&НаСервере
Процедура ЗагрузкаНаСервере(Адрес, МассивКолонок)
темп_Путь = КаталогВременныхФайлов()+ "tf_1c_"+Формат(ТекущаяДата()-Дата(2012,01,01), "ЧГ=0")+".xls";
темп_файл = ПолучитьИзВременногоХранилища(Адрес);
темп_файл.Записать(темп_Путь);
МассивСчетов = ЗагрузитьЭксель(темп_Путь,МассивКолонок);
//...далее работа с полученным массивом данных
Попытка
УдалитьФайлы(темп_Путь);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаСервере
Функция ЗагрузитьЭксель(Путь, МассивКолонки)
МассивРезультат = Новый Массив;
Попытка
ex = ПолучитьCOMобъект("","Excel.Application");
Исключение
Сообщить("Excel Application не создан!!");
Возврат МассивРезультат;
КонецПопытки;
Попытка
ex.workbooks.open(Путь,1);
Исключение
Сообщить("Файл перемещен или удален!");
Возврат МассивРезультат;
КонецПопытки;
RCount = ex.ActiveSheet.UsedRange.Rows.Count();
CCount = ex.ActiveSheet.UsedRange.Columns.Count();
Для j = 2 по RCount цикл
НоваяСтрока = Новый Структура;
Для i=0 По МассивКолонки.Количество()-1 Цикл
НоваяСтрока.Вставить(МассивКолонки[i], ex.ActiveSheet.Cells(j,i+1).Value);
КонецЦикла;
МассивРезультат.Добавить(НоваяСтрока);
КонецЦикла;
ex.workbooks.Close();
ex.quit();
Возврат МассивРезультат;
КонецФункции