Цитата(sava1 @ 12.06.18, 11:55)
[необходимо зарегистрироваться для просмотра ссылки]
Это сработало.
Но.
Вот такой обработчик
Процедура ИмпортироватьЦеныНажатие(Элемент)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите имя файла для чтения";
Диалог.МножественныйВыбор = Ложь;
Диалог.Фильтр = "Файл 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();
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Указанный пример сильно изменять не пришлось...
Засада в том, что не хочет заполнять поле "Номенклатура"... Как сделать "НайтиКоду" или наименованию? Я так понимаю что разница в типе данных?
Lexveritas @ Сегодня, 16:30
,
Сам же отвечу на свой вопрос...
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Excel.Cells(Сч, 1).Text));
НО!
Есть "ХАрактеристикаНоменклатуры" справочник подчиненный владельцу...
Как Здесь быть?