Информация на уникальность или новизну не претендует. В первую очередь пишу для себя, чтоб в случае чего можно было зайти и скопипастить готовый кусочек кода.
Выгрузка
Для выгрузки данных в файл Excel нам поможет процедура, типа следующей:
Процедура Выгрузить()
ТзПодразделенийОрганизации = ПолучитьТзПодразделенийОрганизации();
Попытка
Эксель = Новый COMОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
Лист = Книга.WorkSheets(1);
Лист = Книга.Sheets.Add();
НомерСтроки = 1;
Для Каждого Строка ИЗ ТзПодразделенийОрганизации Цикл
Лист.Cells(НомерСтроки, 1).Value = Строка.Код;
Лист.Cells(НомерСтроки, 2).Value = Строка.Наименование;
Лист.Cells(НомерСтроки, 3).Value = Строка.Владелец;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
КонецПопытки;
Эксель.Application.Quit();
КонецПроцедуры
ПутьКФайлу = "C:\MyFile.xlsx";
Процедура Загрузить()
Если НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда
Предупреждение("Файл не выбран!");
Возврат;
КонецЕсли;
Попытка
Эксель = Новый COMОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Лист = Книга.WorkSheets(1);
СчитанныйФайл = ПрочитатьЛистExcel(, Лист, 1);
Эксель.Quit();
КонецПроцедуры
Функция ПрочитатьЛистExcel(ТЗ = Неопределено, ЛистЭксель = Неопределено, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт
Если ЛистЭксель = Неопределено Тогда
ЛистЭксель = ПолучитьCOMОбъект(,"Excel.Application");
КонецЕсли;
Если ВсегоСтрок = 0 Тогда
ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row;
КонецЕсли;
Если ВсегоКолонок = 0 Тогда
ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column;
КонецЕсли;
Если ТЗ = Неопределено Тогда
ТЗ = Новый ТаблицаЗначений;
Для Счетчик = 1 По ВсегоКолонок Цикл
ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
КонецЦикла;
КонецЕсли;
Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл
НоваяСтрока = ТЗ.Добавить();
КонецЦикла;
Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок));
Данные = Область.Value.Выгрузить();
Для Счетчик = 0 По ВсегоКолонок-1 Цикл
ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);
КонецЦикла;
ЛистЭксель = Неопределено;
Возврат ТЗ;
КонецФункции
Функция ПрочитатьЛистExcel(ТЗ = Неопределено, ЛистЭксель = Неопределено, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт
Если ЛистЭксель = Неопределено Тогда
ЛистЭксель = ПолучитьCOMОбъект(,"Excel.Application");
КонецЕсли;
Если ВсегоСтрок = 0 Тогда
ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row;
КонецЕсли;
Если ВсегоКолонок = 0 Тогда
ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column;
КонецЕсли;
Если ТЗ = Неопределено Тогда
ТЗ = Новый ТаблицаЗначений;
Для Счетчик = 1 По ВсегоКолонок Цикл
ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
КонецЦикла;
КонецЕсли;
Для СчетчикСтрок = НомерПервойСтроки По ВсегоСтрок Цикл
НоваяСтрока = ТЗ.Добавить();
Для СчетчикКолонок = 1 По ВсегоКолонок Цикл
НоваяСтрока[СчетчикКолонок - 1] = ЛистЭксель.Cells(СчетчикСтрок, СчетчикКолонок).Value;
КонецЦикла;
КонецЦикла;
ЛистЭксель = Неопределено;
Возврат ТЗ;
КонецФункции
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua