Несомненно, одним из самых распространенных способов массового занесения информации в информационную систему является загрузка информации в 1С из Excel. Ниже я рассмотрю пошаговое создание обработки загрузки данных.
MS Excel — программа для работы с электронными таблицами, созданная компанией Microsoft. Она предоставляет возможности экономико-статистических расчетов, графические инструменты и язык макропрограммирования VBA. Excel является одним из наиболее популярных приложений в мире.
Обработку мы будем делать универсальную.
1. Создание обработки загрузки и её формы
Тут мы особо ничего не будем придумывать, сделаем поле ввода для выбора файла на диске, кнопку “Прочитать” для чтения файла и заполнения табличной части.
2 Обработчик выбора файла
При нажатии на выбор файла необходимо отображать диалог выбора файла в ОС. Сделать это очень просто. Необходимо на обработчик “НачалоВыбора” в поле ввода файла указать следующий код:
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбора.Заголовок = “Выберите файл”;
Если ДиалогВыбора.Выбрать() Тогда
ИмяФайла = ДиалогВыбора.ПолноеИмяФайла;
КонецЕсли;
3 Обработка данных из Excel и загрузка в 1С
Для начала мы очищаем информацию в таблице, находим файл на диске, подключаемся к Excelчерез COM-объект и проводим все технические настройки:
//очищаем таблицу и удаляем колонки
Таблица.Очистить();
Таблица.Колонки.Очистить();
ЭлементыФормы.Таблица.Колонки.Очистить();
//подключаемся к эксел
Попытка
Excel = Новый COMОбъект(“Excel.Application”);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(“Обработка файла Microsoft Excel…”);
Исключение
Сообщить(“Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!”);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
//Открываем необходимый лист
Excel.Sheets(1).Select(); // лист 1, по умолчанию
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить(“Файл “+Строка(ИмяФайла)+” не соответствует необходимому формату! Первый лист не найден!”);
ОтменитьТранзакцию();
Возврат;
КонецПопытки;
//Получим количество строк и колонок.
//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Версия = Лев(Excel.Version,Найти(Excel.Version,”.”)-1);
Если Версия = “8″ тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
Конецесли;
После того как мы получили все данные из файла, мы считываем 1 строку файла и генерируем колонки на форме с наименованиями из файла:
//считываем первую строку и генерируем колонки
Сч = 1;
Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
ИмяКолонки = Excel.Cells(1, Сч).Text;
ИмяБезПробелов = СтрЗаменить(ИмяКолонки,” “,”»); // убираем из имени колонок пробелы
Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
НоваяКолонка.Данные = ИмяБезПробелов;
Сч = Сч + 1;
КонецЦикла;
После формирования колонок, считываем тело файла эксель и построчно заносим данные в табличное поле:
Для НС = 2 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку
Состояние(“Файл “+Строка(ИмяФайла)+”: Обрабатывается первый лист “+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),”ЧЦ=3; ЧДЦ=0″))+” %”);
ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
НоваяСтрока = Таблица.Добавить();
Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл
//заполняем строку значениями
ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;
НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
КонецЦикла;
КонецЦикла;
В результате мы получаем загруженные данные из excel c такими же колонками.