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