База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как импортировать список из Excel в 1C с помощью модуля? › Ответ в теме: Как импортировать список из Excel в 1C с помощью модуля?
Salam! Excel-dən 1C-yə siyahı import etmək üçün aşağıdakı addımları və nümunə kodu təqdim edirəm. Bu nümunə 1C:Предприятие 8.x üçün yazılıb, COM-obyekt vasitəsilə Excel faylını oxuyur və məlumatları справочник (məsələn, «Номенклатура») və ya başqa obyektə yükləyir.
—
### Addımlar:
1. Excel faylını açmaq və məlumatları oxumaq:
— COM-obyekt yaradılır: Excel.Application
— Fayl açılır, aktiv səhifə seçilir
— Məlumatların sonuncu sətir və sütun sayı tapılır
— Məlumatlar massivə yüklənir
2. Məlumatları 1C obyektinə yazmaq:
— Dövr vasitəsilə massivdəki sətirlər oxunur
— Hər sətirdən məlumatlar alınır
— Yeni элемент yaradılır və doldurulur
— Записать() çağırılır
3. Excel obyektini bağlamaq və yaddaşı boşaltmaq
—
### Nümunə kod (1C:Enterprise 8.x, встроенный язык):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Перем ExcelApp; Процедура ИмпортИзExcel(ПутьКФайлу) Попытка // Инициализация Excel ExcelApp = Новый COMОбъект("Excel.Application"); ExcelApp.Visible = Ложь; ExcelApp.DisplayAlerts = Ложь; // Открываем книгу Книга = ExcelApp.Workbooks.Open(ПутьКФайлу); Лист = Книга.Sheets(1); // Определяем диапазон с данными ПоследняяСтрока = Лист.UsedRange.Rows.Count; ПоследнийСтолбец = Лист.UsedRange.Columns.Count; // Считываем данные в массив Область = Лист.Range(Лист.Cells(1,1), Лист.Cells(ПоследняяСтрока, ПоследнийСтолбец)); МассивДанных = Область.Value; // Закрываем книгу и Excel Книга.Close(Ложь); ExcelApp.Quit(); ОсвободитьОбъект(ExcelApp); // Обработка данных Для НомерСтроки = 2 По ПоследняяСтрока Цикл // Предполагаем, что первая строка - заголовки // Пример: импортируем в справочник "Номенклатура" НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); // Пример заполнения реквизитов из колонок Excel // МассивДанных[Строка, Столбец] НовыйЭлемент.Наименование = МассивДанных[НомерСтроки, 1]; // Если есть другие поля, например, код, цена и т.п. // НовыйЭлемент.Код = МассивДанных[НомерСтроки, 2]; // НовыйЭлемент.Цена = МассивДанных[НомерСтроки, 3]; НовыйЭлемент.Записать(); КонецЦикла; Сообщить("Импорт завершен успешно. Импортировано строк: " + (ПоследняяСтрока - 1)); Исключение Если Не ПустаяСтрока(ОписаниеОшибки()) Тогда Сообщить("Ошибка при импорте: " + ОписаниеОшибки()); КонецЕсли; Если НЕ ПустаяСтрока(ExcelApp) Тогда ExcelApp.Quit(); ОсвободитьОбъект(ExcelApp); КонецЕсли; КонецПопытки; КонецПроцедуры |
—
### Важные моменты:
— В Excel первая строка обычно заголовки, поэтому импорт начинается со второй.
— В зависимости от структуры Excel файла, нужно подстроить индексы колонок.
— Если импортируете в другой справочник или документ, меняйте соответствующие объекты.
— Обязательно освобождайте COM-объекты, чтобы не оставлять процессы Excel в памяти.
— Для больших файлов лучше использовать пакетную обработку или загрузку через табличный документ.
—
### Рекомендации:
— Если нужно импортировать много данных, лучше сначала загрузить в ТабличныйДокумент, а потом обработать.
— Для более сложных структур (например, табличные части документов) нужно делать вложенные циклы.
— Можно добавить проверку на пустые строки, дубли и т.п.
—
Если нужно, могу помочь адаптировать под конкретную структуру Excel и 1С. Но этот код — базовый и рабочий пример для старта.
—
Рекомендую посмотреть здесь для подробностей и примеров:
https://helpf.pro/faq8/view/1045.html
https://helpf.pro/faq/view/1024.html