Загрузка Данных из Экселя В Документ

1. _7445_ 24.01.19 14:31 Сейчас в теме
Здравствуйте. Я очень мало знаю русский. Извините за этого. Я еще новичок в 1С программирование. Есть токая задания "Загрузить данные из эксель". Подробнее: В УТ 10.3 Есть документ поступление товаров услуг. Надо создать кнопку который будить реализовать это: Когда пользователь в новым(пустым) документе нажал эту кнопку открылся окно рабочий стол(компьютера) . Он могла выбрать эксель файл. Потом программ автоматически заполняет табличный часть документа (ПоступлениеТоваровУслуг.Товары)(Колонки номенклатура, количество, цена, сумма). Написал код но есть места который не работает.
Эксель.Workbooks.Open();
что надо писать в скобках?
Как исправится с этим?
Спасиба всем за ранее.
Перем СЗ, ТЗ;
Процедура СозданиеТаблицыЗначений()
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПолноеНаименование",,"ПолноеНаименование");
ТЗ.Колонки.Добавить("Номенклатура",,"Номенклатура");
ТЗ.Колонки.Добавить("Количество",,"Количество");
ТЗ.Колонки.Добавить("Цена",,"Цена");
ТЗ.Колонки.Добавить("Сумма",,"Сумма");

ТЗ.Колонки.Добавить("ПолноеНазвание" ,Новый ОписаниеТипов("СписокЗначений"));

КонецПроцедуры

Функция ПоискПодстроки(Подстрока, ПодстрокаРасшифровка)
	
	ПозицияСимвола = Найти(Подстрока, ",");
	ПозицияСимволаРасшифровка = Найти(ПодстрокаРасшифровка, ",");
	
	Если ПозицияСимвола <> 0 Тогда
		ПерваяНоменклатура = Лев(Подстрока, ПозицияСимвола - 1);
		ПерваяНоменклатураРасшифровка = Лев(ПодстрокаРасшифровка, ПозицияСимволаРасшифровка - 1);
		
		СЗ.Добавить(ПерваяНоменклатура, ПерваяНоменклатураРасшифровка);
		Остаток = СтрДлина(Подстрока) - (СтрДлина(ПерваяНоменклатура) + 1);
		ОстатокРасшифровка = СтрДлина(ПодстрокаРасшифровка) - (СтрДлина(ПерваяНоменклатураРасшифровка) + 1);
		
		Возврат ПоискПодстроки(Прав(Подстрока, Остаток), Прав(ПодстрокаРасшифровка,ОстатокРасшифровка));  

	Иначе
		СЗ.Добавить(СокрЛП(Подстрока), СокрЛП(ПодстрокаРасшифровка));
		Возврат ПозицияСимвола;
		КонецЕсли;
КонецФункции // ПоискПодстроки()

Процедура ПереборСтрокВЭксель()

	Эксель = Новый COMОбъект("Excel.Application");
	Эксель.Workbooks.Open();
	Эксель.Sheets(1).Select();
	
	Для Стр = 1 ПО 10 Цикл
		СЗ = Новый СписокЗначений;
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.ПолноеНаименование = СокрЛП(Эксель.Cells(Стр,1).Value);
		НоваяСтрока.Номенклатура = СокрЛП(Эксель.Cells(Стр,2).Value);
		НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,2).Value);
		НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,3).Value);
		НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,4).Value);
		
		ПозицияСимвола = ПоискПодстроки(СокрЛП(Эксель.Cells(Стр,1).Value), СокрЛП(Эксель.Cells(Стр,2).Value));
		НоваяСтрока.ПолноеНазвание = СЗ;
	КонецЦикла;
	
	Эксель.ActiveWorkbook.Close();
	Эксель.Application.Quit();
КонецПроцедуры

Процедура ПереборСтрокТЗ()

	Для Каждого Ст из ТЗ Цикл
	Стр = ЭлементыФормы.Товары.ТекущиеДанные;
	Стр.Номенклатура = Ст.Номенклатура;
	Стр.Количество = Ст.Количество;
	Стр.Цена = Ст.Цена;
	Стр.Сумма = Ст.Сумма;
	Стр.Записать();
	КонецЦикла;
	
КонецПроцедуры

Процедура ОсновныеДействияФормыЗагрузитьДанные(Кнопка)
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Фильтр = "Формат xls (*.xls; *.xlsx)|*.xls;*.xlsx|"; 
	Если Диалог.Выбрать() Тогда
		Предупреждение(Диалог.ПолноеИмяФайла,10,"Файл выбран.");
	Иначе
		Предупреждение("Файл не выбран.");
		Возврат;
	КонецЕсли;
	    	
	СозданиеТаблицыЗначений();	
        ПереборСтрокВЭксель();
        ПереборСтрокТЗ();
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Aftee 24.01.19 15:13 Сейчас в теме
Что за ошибка? open(здесь имя файла должно быть)
3. _7445_ 24.01.19 15:16 Сейчас в теме
(2)
Спасибо за внимание.
Я путь написал но выдают ошибку {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(3391)}: Ошибка при вызове метода контекста (Open)
Эксель.Workbooks.Open(Путь);
по причине:
Произошла исключительная ситуация (Microsoft Excel): Не удалось найти "". Проверьте правильность ввода имени и расположения файла.

При попытке открытия файла из списка недавно использованных файлов убедитесь, что файл не был переименован, перемещен или удален.
4. Aftee 24.01.19 15:18 Сейчас в теме
(3) Переменная "Путь" - пустая строка. Передайте туда полное имя файла
6. _7445_ 24.01.19 15:23 Сейчас в теме
(4)Сделал ошибка исчезла но сейчас выдают это
Процедура ПереборСтрокТЗ()

	Для Каждого Ст из ТЗ Цикл
	Стр = ЭлементыФормы.Товары.ТекущиеДанные;
	Стр.Номенклатура = Ст.Номенклатура;
	Стр.Количество = Ст.Количество;
	Стр.Цена = Ст.Цена;
	Стр.Сумма = Ст.Сумма;
	Стр.Записать();
	КонецЦикла;
	
КонецПроцедуры
Показать

{Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(3416)}: Значение не является значением объектного типа (Номенклатура)
Стр.Номенклатура = Ст.Номенклатура;
7. Aftee 24.01.19 15:30 Сейчас в теме
5. Aftee 24.01.19 15:22 Сейчас в теме
(3)
Процедура ОсновныеДействияФормыЗагрузитьДанные(Кнопка)
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Фильтр = "Формат xls (*.xls; *.xlsx)|*.xls;*.xlsx|"; 
    Если Диалог.Выбрать() Тогда
        Предупреждение(Диалог.ПолноеИмяФайла,10,"Файл выбран.");
    Иначе
        Предупреждение("Файл не выбран.");
        Возврат;
    КонецЕсли;
            
    СозданиеТаблицыЗначений();    
        ПереборСтрокВЭксель(Диалог.ПолноеИмяФайла);
        ПереборСтрокТЗ();
КонецПроцедуры

Процедура ПереборСтрокВЭксель(ПолноеИмяФайла)

    Эксель = Новый COMОбъект("Excel.Application");
    Эксель.Workbooks.Open(ПолноеИмяФайла);
    Эксель.Sheets(1).Select();

Показать


А так?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот