Загрузка данных в 1С из xls
При ведении учета в системе 1С:Предприятие достаточно часто возникает необходимость загружать различные данные из файлов формата .xls. В файлах .xls могут, например, храниться цены на товар, предоставленные поставщиком или просто список товаров. Чтобы эти данные были доступны в базе 1С, их надо туда загрузить. Нижеприведенный программный модуль демонстрирует загрузку из файла формата .xls новых кодов и наименований товаров в справочник Номенклатура.
ИмяФайла= "С:\Товары\каталог.xls";
Попытка
//создаем ссылку на приложение Excel
ExcelApp = СоздатьОбъект("Excel.Application");
Исключение
Предупреждение(ОписаниеОшибки()+"; программа Excel не установлена на данном компьютере!");
СтатусВозврата(0);
КонецПопытки;
Попытка
//открывем рабочую книгу из файла "С:\Товары\каталог.xls"
Книга = ExcelApp.WorkBooks.Open(ИмяФайла);
//открывем первую страницу рабочей книги
Страница = Книга.WorkSheets(1);
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
ПрТов = СоздатьОбъект("Справочник.Номенклатура");
//начинаем цикл, пока не сработает команда "прервать".
Ном=1; //начинаем перебор с первой строки таблицы
Пока 1=1 Цикл
//считываем значения из ячеек рабочей книги
Код = СокрЛП(Строка(ExcelApp.Cells(Ном,1).Value));
Наименование = СокрЛП(Строка(ExcelApp.Cells(Ном,2).Value));
НовыйКод = СокрЛП(Строка(ExcelApp.Cells(Ном,3).Value));
НовоеНаимен = СокрЛП(Строка(ExcelApp.Cells(Ном,4).Value));
Если ПустоеЗначение(Код) = 1 Тогда
//кончились товары, прекращаем перебор
Прервать;
КонецЕсли;
//находим в справочнике Номенклатура товар с заданным кодом
Если ПрТов.НайтиПоКоду(Код)=1 Тогда
Если ПустоеЗначение(НовыйКод)=0 Тогда
//меняем у найденного товара код и наименование на считанные
//из рабочей книги значения
ПрТов.Код=НовыйКод;
Если ПустоеЗначение(НовоеНаимен)=0 Тогда
ПрТов.Наименование=НовоеНаимен;
КонецЕсли;
Тов=ПрТов.ТекущийЭлемент();
Попытка
ПрТов.Записать();
Сообщить("Обновлен товар ("+Тов.Код+") "+Тов.Наименование);
Исключение
Сообщить("Товар с кодом ("+НовыйКод+") уже существует");
КонецПопытки;
КонецЕсли;
Иначе
Сообщить("Не найден "+Код);
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
//завершаем работу с приложением Excel
ExcelApp.Quit();
ExcelApp = "";
Аналогичным образом можно заполнять справочники цен на товары, контрагентов и др. Загруженные таким образом данные быстро становятся доступными для использования в базе 1С.