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


// Загрузка файлов в справочники
&НаСервере
Процедура ЗагрузитьДанныеНаСервере(Результат, ДопПараметр) Экспорт
	// Проверка выбора файла
	Если НЕ (Результат = Неопределено) Тогда
		СсылкаНаФайл = Результат[0];
	Иначе
		Сообщить("Файл не выбран");
		Возврат;
	КонецЕсли;
	// Чтение данных
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Прочитать(СсылкаНаФайл);
	Для Строка = 2 ПО ТабДок.ВысотаТаблицы Цикл
			ЭлементНоменклатуры = Справочники.Номенклатура.СоздатьЭлемент();
			// Артикул
			ЭлементНоменклатуры.Код = ТабДок.Область(Строка, 1).Текст;
			// Наименование
			ЭлементНоменклатуры.Наименование = ТабДок.Область(Строка, 2).Текст;
			// Длина
			ЭлементНоменклатуры.Длина = ТабДок.Область(Строка, 4).Текст;
			// Количество
			ЭлементНоменклатуры.Количество = ТабДок.Область(Строка, 5).Текст;
			// Цена
			ЭлементНоменклатуры.Цена = ТабДок.Область(Строка, 7).Текст;
			// Единицы измерения
			ТабДокЕдИзм = ТабДок.Область(Строка, 3).Текст;
			Если Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ТабДокЕдИзм, Истина) = Справочники.ЕдиницыИзмерения.ПустаяСсылка() Тогда
				ЭлементЕдИзм = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
				ЭлементЕдИзм.Наименование = ТабДокЕдИзм;
				ЭлементЕдИзм.Записать();
			КонецЕсли;
			ЭлементНоменклатуры.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ТабДокЕдИзм, Истина);
			// Тип
			ТабДокТип = ТабДок.Область(Строка, 6).Текст;
			Если Справочники.ТипыНоменклатуры.НайтиПоНаименованию(ТабДокТип, Истина) = Справочники.ТипыНоменклатуры.ПустаяСсылка() Тогда
				ЭлементТип = Справочники.ТипыНоменклатуры.СоздатьЭлемент();
				ЭлементТип.Наименование = ТабДокТип;
				ЭлементТип.Записать();
			КонецЕсли;
			ЭлементНоменклатуры.ТипНоменклатуры = Справочники.ТипыНоменклатуры.НайтиПоНаименованию(ТабДокТип, Истина);
			ЭлементНоменклатуры.Записать();
	КонецЦикла;
КонецПроцедуры

// Выбор файла
&НаКлиенте
Процедура ЗагрузитьДанные(Команда)
	ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ВыборФайла.МножественныйВыбор = Ложь;
	ВыборФайла.Фильтр = "Табличные документы *.xlsx | *.xlsx";
	ВыборФайла.Показать(Новый ОписаниеОповещения("ЗагрузитьДанныеНаСервере", ЭтотОбъект, Новый Структура));
КонецПроцедуры

&НаКлиенте
Процедура ОтборКатегорияКачестваПриИзменении(Элемент)
	Список.Отбор.Элементы.Очистить();
	ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КатегорияКачества");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.ПравоеЗначение = ОтборКатегорияКачества;
	ПолучитьИтог();
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьВсе(Команда)
	Список.Отбор.Элементы.Очистить();
КонецПроцедуры

// Процедура для расчета итогов
&НаСервере
Процедура ПолучитьИтог()
	Если Не ОтборКатегорияКачества.Пустая() Тогда
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КОЛИЧЕСТВО(Номенклатура.Код) КАК ВсегоПозиций
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура
		|ГДЕ
		|	Номенклатура.КатегорияКачества = &КатегорияКачества";
	Запрос.УстановитьПараметр("КатегорияКачества", ОтборКатегорияКачества);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	КоличествоПозиций = РезультатЗапроса[0].ВсегоПозиций;
	
Иначе
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КОЛИЧЕСТВО(Номенклатура.Код) КАК ВсегоПозиций
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура";
	Запрос.УстановитьПараметр("КатегорияКачества", ОтборКатегорияКачества);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	КоличествоПозиций = РезультатЗапроса[0].ВсегоПозиций;
	КонецЕсли;
КонецПроцедуры