УПП 1.3, 1С8,3,10
В документе "УстановкаЦенНоменклатуры" кнопка.
Вот обработчик кнопки:
Процедура КоманднаяПанельТаблицыТиповЦенДобваитьИзЭксель(Кнопка)
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбора.Заголовок ="Выберите файл";
Если ДиалогВыбора.Выбрать()Тогда
ИмяФайла=ДиалогВыбора.ПолноеИмяФайла;
КонецЕсли;
ТаблицаЦен.Очистить();
Попытка
Excel=Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Excel");
ТекЛист=Excel.Sheets(1);
Excel.WorkBooks.Close();
Исключение
Сообщить(ОписаниеОшибки());
Предупреждение("Файл не открыт!"+Символы.ПС+"Проверьте файл!");
Возврат
КонецПопытки;
МассивКолонок = ТекЛист.Выгрузить();
ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
Для СтрокаТП = 0 По ВсегоСтрок Цикл
НоваяСтрока = ТаблицаЦен.Добавить();
НоваяСтрока.Номенклатура = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
КонецЦикла;
КонецПроцедуры
У данного COM-объекта нет метода "Выгрузить". Там все методы - латинские.
пройти циклом по строкам Листа и заполнить ТЧ
Вооще-то Гугль дает кучу сцылок
http://pro1c.org.ua/redirect.php?http://1c8xx.ru/excel1c.php
Процедура ИмпортироватьЦеныНажатие(Элемент)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите имя файла для чтения";
Диалог.МножественныйВыбор = Ложь;
Диалог.Фильтр = "Файл MS Excel (.xlsx)| *.xlsx";
//Диалог.Фильтр = "Все файлы (*.*)| *.*";
Если Не Диалог.Выбрать() Тогда
Сообщить("Файл для обработки не выбран!");
Иначе
//подключаемся к Excel
ФайлДанных = Диалог.ПолноеИмяФайла;
Попытка
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;
КонецЕсли;
ИмпртЦен.Очистить();
Попытка //Если случится ошибка, то закроем файл, чтобы не висел в процессах
Для Сч = 2 По ФайлСтрок Цикл
Состояние("Обрабатывается строка " + Строка(Сч) + " из " + Строка(ФайлСтрок));
Если НЕ СокрЛП(Excel.Cells(Сч, 1).Value) = "" Тогда
НоваяСтрока = ИмпртЦен.Добавить();
НоваяСтрока.Номенклатура = СокрЛП(Excel.Cells(Сч, 1).Text);
НоваяСтрока.Цена = СокрЛП(Excel.Cells(Сч, 2).Text);
//НоваяСтрока.ТестовоеЧисло1 = СокрЛП(Excel.Cells(Сч, 3).Value);
//НоваяСтрока.ТестовоеЧисло2 = СокрЛП(Excel.Cells(Сч, 4).Value);
//НоваяСтрока.ТестовоеЧисло3 = СокрЛП(Excel.Cells(Сч, 5).Value);
//НоваяСтрока.ТестовоеЧисло4 = СокрЛП(Excel.Cells(Сч, 6).Value);
//НоваяСтрока.ТестовоеЧисло5 = СокрЛП(Excel.Cells(Сч, 7).Value);
//НоваяСтрока.ТестовоеЧисло6 = СокрЛП(Excel.Cells(Сч, 8).Value);
//НоваяСтрока.ТестовоеЧисло7 = СокрЛП(Excel.Cells(Сч, 9).Value);
//НоваяСтрока.ТестоваяДата = СокрЛП(Excel.Cells(Сч, 10).Value);
КонецЕсли;
КонецЦикла;
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel.Quit();
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
Сообщить("Файл Excel прочитан!");
Excel.Quit();
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецЕсли;
КонецПроцедуры
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Excel.Cells(Сч, 1).Text));
НоваяСтрока.ХарактеристикаНоменклатуры = Справочники.ХарактеристикаНоменклатуры.НайтиПоНаименованию(СокрЛП(Excel.Cells(Сч, "КолонкаХарактеристики").Text),,,НоваяСтрока.Номенклатура);
Vidocq05 @ Сегодня, 11:27
,
Именно так и сделал!
По собственной же глупости не увидал что там еще и по владельцу параметр есть...
Но все равно спасибо!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua