База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как импортировать список из Excel в 1C с помощью модуля?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 22 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
15 апреля 2026 в 12:02 #36424
Salam. Mənə Excel-dən siyahını 1C-yə import edən modul yazmaqda yardım elə 1 professional kimi
-
15 апреля 2026 в 12:02 #36425
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ənir2. 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ır3. Excel obyektini bağlamaq və yaddaşı boşaltmaq
—
### Nümunə kod (1C:Enterprise 8.x, встроенный язык):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455Перем ExcelApp;Процедура ИмпортИзExcel(ПутьКФайлу)Попытка// Инициализация ExcelExcelApp = Новый 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
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.