Загрузка данных из Excel

&НаСервере
Функция ПолучитьТЗДляНестандарта()
	Результат = Новый ТаблицаЗначений;
	Результат.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Результат.Колонки.Добавить("ЕдИзм", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Результат.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Возврат Результат;
КонецФункции

&НаКлиенте
Процедура Расш1_ЮКОЗ_ЗагрузитьНестандартПосле(Команда)
	
	Результат = ПолучитьТЗДляНестандарта();
	
	Режим = РежимДиалогаВыбораФайла.Открытие; 
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); 
	ДиалогОткрытияФайла.ПолноеИмяФайла = ""; 
	Фильтр = "Excel файлы(*.xls;*.xlsx)|*.xls;*.xlsx"; 
	ДиалогОткрытияФайла.Фильтр = Фильтр; 
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь; 
	ДиалогОткрытияФайла.Заголовок = "Выберите файл"; 
	
	Если ДиалогОткрытияФайла.Выбрать() Тогда 
		
		Попытка
			Эксель = Новый COMОбъект("Excel.Application");
		Исключение
			Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!"); 
			Возврат;
		КонецПопытки;
		
		Книга = Эксель.WorkBooks.Open(ДиалогОткрытияФайла.ПолноеИмяФайла);
		Лист = Книга.WorkSheets(1);
		
		НомерСтроки = 2;
				
		Пока НЕ ПустаяСтрока(Лист.Cells(НомерСтроки, 1).Value) Цикл
			
			НоваяСтрока = Результат.Добавить();
			НоваяСтрока.Артикул	= СокрЛП(Лист.Cells(НомерСтроки,1).Value);
			НоваяСтрока.Номенклатура	= СокрЛП(Лист.Cells(НомерСтроки,2).Value);
			НоваяСтрока.Характеристика	= СокрЛП(Лист.Cells(НомерСтроки,3).Value);
			НоваяСтрока.Количество	= СокрЛП(Лист.Cells(НомерСтроки,4).Value);
			НоваяСтрока.ЕдИзм	= СокрЛП(Лист.Cells(НомерСтроки,5).Value);
			НоваяСтрока.Цена	= СокрЛП(Лист.Cells(НомерСтроки,6).Value);
			НоваяСтрока.Сумма	= СокрЛП(Лист.Cells(НомерСтроки,7).Value);
			
			Если НЕ ЗначениеЗаполнено(НоваяСтрока.Номенклатура) Тогда
				ВызватьИсключение "В строке №" + НомерСтроки + " не заполнено наимевание номенклатуры. Загрузка прервана!";	
				Возврат;
			КонецЕсли;
			
			НомерСтроки = НомерСтроки + 1;
			
		КонецЦикла;	
		
		Эксель.Application.Quit();
		
	КонецЕсли;
	
КонецПроцедуры
1
{54} Обнаружен недостижимый участок кода
Орфографическая ошибка в ПолучитьТЗДляНестандарта (найдено 2): Нестандарта
Орфографическая ошибка в Расш1_ЮКОЗ_ЗагрузитьНестандартПосле: Нестандарт
Орфографическая ошибка в Эксель (найдено 3): Эксель
Орфографическая ошибка в Exсel: Exсel
Орфографическая ошибка в наимевание: наимевание

Комментарии

Ali
#1, ред. 02 февраля 2021 10:50

на клиенте получаете ТЗ ,и потом на клиенте же формируете строки ,для кого такой код


См. также

Загрузка из excel, xls

Пример работы с OpenOffice/LibreOffice Calc

Выгрузка в Excel документ

ПриЗагрузкеДанных (БСП)

ПриЗагрузкеОбъекта (БСП)

ПослеЗагрузкиДанных (БСП)

ПередЗагрузкойДанных (БСП)

Модератору