Работа с Excel в 1С 8

Работа с 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Файла(Элемент)

 

Взято с http://www.cfdt.ru/?globalNav=1&section=5&page=10