Excel
&НаКлиенте
Процедура путькфайлуНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
//Чтобы нельзя было выбрать несколько файлов одновременно
Диалог.МножественныйВыбор = Ложь;
Диалог.Заголовок = "Выберите файл для загрузки";
//Чтобы выбирались только файлы нужного расширения
Диалог.Фильтр = "Табличный документ Excel 2003(*.xls)|*.xls|Табличный документ Excel(*.xlsx)|*.xlsx";
//Если выбран файл, то сохраняем путь к нему
Если Диалог.Выбрать() Тогда
ПутьКФайлу = Диалог.ПолноеИмяФайла;
КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
Если Не ЗначениеЗаполнено(ПутьКФайлу) Тогда
Сообщить("Файл не выбран");
Иначе
ЗагрузитьНаСервере();
//Отобразим загруженные данные
Элементы.Список.Обновить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНаСервере()
//подключаемся к эксел
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ПутьКФайлу);
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
//Открываем необходимый лист
Excel.Sheets(1).Select(); // лист 1, по умолчанию
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить("Файл "+Строка(ПутьКФайлу)+" не соответствует необходимому формату! Первый лист не найден!");
Возврат;
КонецПопытки;
НомерСтроки = 2;
Создано = 0;
Пока СокрЛП(Excel.Cells(НомерСтроки,1).Text)<> "" Цикл
Код = Excel.Cells(НомерСтроки,9).Text;
Спр = Справочники.материалы.НайтиПоКоду(Код);
//Проверка на существование элемента с таким кодом
Если Не ЗначениеЗаполнено(Спр) Тогда
НовыйСпр = Справочники.материалы.СоздатьЭлемент();
//Код
НовыйСпр.Код = Код;
новыйспр.артикул=Excel.Cells(НомерСтроки,1).Text;
//Наименование
НовыйСпр.Наименование = Excel.Cells(НомерСтроки,2).Text;
Если пустаястрока(справочники.единицы_измерения.найтипонаименованию(Excel.Cells(номерстроки,3).Text)) Тогда
новая_единица=справочники.единицы_измерения.СоздатьЭлемент();
новая_единица.Наименование=Excel.Cells(НомерСтроки,3).Text;
новая_единица.Записать();
КонецЕсли;
Попытка
НовыйСпр.Записать();
Создано = Создано+1;;
Исключение
Сообщить("Ошибка при записи элемента с кодом "+код);
КонецПопытки;
Иначе
Сообщить("Элемент с кодом "+Код+" уже существует");
КонецЕсли;
НомерСтроки = НомерСтроки+1;
КонецЦикла;
Сообщить("Создано "+Создано+" эл.");
//Закрываем Excel
Excel.ActiveWorkBook.Close();
КонецПроцедуры
Показать