Достаточно часто необходимо выполнить загрузку данных из эксель-файла, в котором данные представлены в виде обычной плоской таблицы с заголовками в первой строке, а сама таблица расположена на первом листе книги. Для таких данных и предназначена данная простая функция. Суть ее работы в следующем: в качестве параметра передаем имя эксель-файла с полным путем, на выходе получаем массив, в каждом элементе которого содержится структура с данными из каждой строки. Имя полей структуры берется из первой строки первого листа книги, а содержимое заполняется из последующих строк. Особенность данной функции в том, что она может быть выполнена на стороне тонкого клиента, а её результат передан в функцию или процедуру на сервер (из за этого пришлось отказаться от таблицы значений). В случае необходимости можно немного поравить процедуру, что бы она начинала импорт с других листов или не первой строки. Так же для работы данной функции на клиентской машине должен быть установлен эксель
Текст функци:
Функция ПолучитьМассивИзЭкселя(Файл)
Перем exl, ОписаниеСтруктуры, Данные;
Данные=Новый Массив();
exl= Новый COMОбъект("Excel.application");
exl.Workbooks.Open(Файл);
sh=exl.Workbooks(1).Worksheets(1);
Столбец=1;
ОписаниеСтруктуры="";
Пока не sh.cells(1,Столбец).Value=Неопределено цикл
ОписаниеСтруктуры=ОписаниеСтруктуры+СокрЛП(sh.cells(1,Столбец).Value)+",";
Столбец=Столбец+1;
КонецЦикла;
ОписаниеСтруктуры=Лев(ОписаниеСтруктуры,СтрДлина(ОписаниеСтруктуры)-1);
строка=2;
Пока не sh.cells(строка,1).Value=Неопределено цикл
нов = Новый Структура(ОписаниеСтруктуры);
Столбец=1;
Для Каждого поле из нов цикл
нов[поле.Ключ]=sh.cells(строка,Столбец).Value;
Столбец=Столбец+1;
КонецЦикла;
Данные.Добавить(нов);
строка=строка+1;
КонецЦикла;
exl.Application.Quit();
возврат Данные;
КонецФункции