Работа с Excel в 1С 8
Импорт данных в 1С из Microsoft Excel Вопросы по операциям импорта и экспорта данных между системами 1С и Excel возникают достаточно неоднократно при активной работе с различными источниками информации. Обработка по работе с Excel файлами рассмотренная в данной статье позволяет загрузить сведения из выбранного файла в табличную часть формы для последующей обработки информации уже внутри 1С Предприятия (автоматизированное создание документов, автоматическое заполнение справочников и регистров сведений и т.д.).
Описание алгоритма загрузки из Excel в 1С В обработке описано три функции, формулировка которых имеется возможность прочитать, скачав бесплатную демонстрационную версию. При нажатии кнопки "Загрузить" происходит создание COM Объекта для связи с приложением Excel, далее открывается выбранный файл. По умолчанию обработка будет использовать Лист 1 открытой книги. Дан пример последовательного чтения xls или xlsx файла по строкам. В примере определены три столбца - Артикул, Описание, Цена. Именно такие колонки чаще всего встречаются в прайс-листах, для импорта которых и может быть полезна эта заготовка.
Исходный код процедуры 1С для загрузки XLS файла: Процедура ЧтениеXLSФайла(Элемент)
Если ПустаяСтрока(ИмяФайла) Тогда Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel."); Возврат; КонецЕсли;
Попытка // Загрузка Microsoft Excel Состояние("Загрузка Microsoft Excel..."); ExcelПриложение = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат; КонецПопытки;
Попытка // Открытие файла Microsoft Excel Состояние("Открытие файла Microsoft Excel..."); ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла); Исключение Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки;
Попытка // Обработка файла Microsoft Excel Состояние("Обработка файла Microsoft Excel..."); // Читаем данные первого листа книги ExcelЛист = ExcelФайл.Sheets(1);
// Определить количество строк и колонок выбранного листа книги Excel xlCellTypeLastCell = 11; ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row; ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column; Исключение Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); // Закрыть COM соединение для экономии памяти ExcelПриложение.Quit(); КонецПопытки;
// Создание описателя типов для таблицы значений КЧ = Новый КвалификаторыЧисла(15,2); КС = Новый КвалификаторыСтроки(50); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); Массив.Очистить(); Массив.Добавить(Тип("Число")); ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
// Очистить предыдущие значения ТаблицаДокумента.Очистить(); ТаблицаДокумента.Колонки.Очистить();
// Создать колонки табличного документа ТаблицаДокумента.Колонки.Добавить("Номер",ОписаниеТиповС,"Номер",5); ТаблицаДокумента.Колонки.Добавить("Артикул",ОписаниеТиповС,"Артикул",11); ТаблицаДокумента.Колонки.Добавить("Описание",ОписаниеТиповС,"Описание",25); ТаблицаДокумента.Колонки.Добавить("Цена",ОписаниеТиповЧ,"Цена",6);
// Последовательное чтение строк с выбранного листа Для Строка = 1 По ExcelПоследняяСтрока Цикл
// Обработка нажатия Ctrl + Break ОбработкаПрерыванияПользователя();
// Добавить данные в табличную часть экранной формы Стр=ТаблицаДокумента.Добавить(); Стр.Номер = Строка; Попытка Стр.Артикул = ExcelЛист.Cells(Строка, 1).Value; Стр.Описание = ExcelЛист.Cells(Строка, 2).Value; Стр.Цена = ExcelЛист.Cells(Строка, 3).Value; Исключение // Не редко происходит ошибка конвертации отдельной ячейки документа Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; // Отобразить информацию о ходе выполнения обработки Состояние("Обработка файла Microsoft Excel : " + "строка " + Строка + " из " + ExcelПоследняяСтрока);
КонецЦикла;
// Закрыть COM соединение для экономии памяти ExcelПриложение.Quit();
// Отобразить результаты загрузки в форме элемента ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента; ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
КонецПроцедуры // ЧтениеXLSФайла(Элемент)
