&НаСервере
Процедура ОбработатьВыборФайла(ПомещенныеФайлы, ДополнительныеПараметры)
Если
ПомещенныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
Для
каждого ПереданныйФайл Из ПомещенныеФайлы Цикл
РасширениеФайла
= "";
МассивСтрок
= СтрРазделить(ПереданныйФайл.Имя, ".", Ложь);
Если
МассивСтрок.Количество() > 1 Тогда
РасширениеФайла
= МассивСтрок[МассивСтрок.Количество() - 1];
КонецЕсли;
ДвоичныеДанные
= ПолучитьИзВременногоХранилища(ПереданныйФайл.Хранение);
ИмяВременногоФайла
= ПолучитьИмяВременногоФайла(РасширениеФайла);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ОбработатьВыборФайлаНаСервере(ИмяВременногоФайла);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбработатьВыборФайлаНаСервере(ИмяВременногоФайла) Экспорт
ТабличныйДокумент
= Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ИмяВременногоФайла);
Построитель
= Новый ПостроительЗапроса;
Построитель.ИсточникДанных
= Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
Построитель.Выполнить();
ТЗ
= Построитель.Результат.Выгрузить();
//Добавляем
колонки в "ТабДок"
Для
НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл
КолонкаВШапке
= СокрЛП(ТабличныйДокумент.Область(1, НомерКолонки).Текст);
КолонкаВШапкеБезПробелов
= СтрЗаменить(КолонкаВШапке, " ", "");
Если
Элементы.Найти(КолонкаВШапкеБезПробелов) = Неопределено Тогда
нРеквизиты
= Новый Массив;
нРеквизиты.Добавить(Новый
РеквизитФормы(КолонкаВШапкеБезПробелов, Новый
ОписаниеТипов("Строка"), "Объект.ТабДок", КолонкаВШапке,
Истина));
ИзменитьРеквизиты(нРеквизиты);
нЭлемент
= Элементы.Добавить(КолонкаВШапкеБезПробелов, Тип("ПолеФормы"),
Элементы.ТабДок);
нЭлемент.Вид
= ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным
= "Объект.ТабДок." + КолонкаВШапкеБезПробелов;
КонецЕсли
КонецЦикла;
//Загружаем
"ТЗ" в "ТабДок"
Объект.ТабДок.Загрузить(ТЗ);
//Обрабатываем
данные
Для
НомерСтроки = 2 По ТабличныйДокумент.ВысотаТаблицы Цикл
//Считываем
колонки в текущей строке
ТекКод
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 1).Текст);
ТекНаименование
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 2).Текст);
ТекКодФИАС
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 3).Текст);
ТекКодВнешнейСистемы
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 4).Текст);
//Ищем
элемент справочника по реквизиту "Код"
ТекСсылка
= Справочники.Дома.НайтиПоКоду(ТекКод);
Если
НЕ ТекСсылка.Пустая() Тогда
Об
= ТекСсылка.ПолучитьОбъект();
Об.Код
= ТекКод;
Об.Наименование
= ТекНаименование;
Об.КодФИАС
= ТекКодФИАС;
Об.КодВнешнейСистемы
= ТекКодВнешнейСистемы;
//Обходим табличную
часть документа
Если
Об.КодыВнешнихСистем.Количество() = 0 Тогда
Строка
= Об.КодыВнешнихСистем.Добавить();
Строка.РЦ
= "АИС";
Строка.КодВнешнейСистемы
= ТекКодВнешнейСистемы;
ИначеЕсли
Об.КодыВнешнихСистем.Количество() > 0 Тогда
//Проверяем,
есть ли такой КодВнешнейСистемы
Для
Каждого Эл Из Об.КодыВнешнихСистем Цикл
Если
Эл.КодВнешнейСистемы <> ТекКодВнешнейСистемы Тогда
Строка
= Об.КодыВнешнихСистем.Добавить();
Строка.РЦ
= "АИС";
Строка.КодВнешнейСистемы
= ТекКодВнешнейСистемы;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Об.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИксель(Команда)
ДиалогОткрытияФайла
= Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.МножественныйВыбор
= Ложь;
ДиалогОткрытияФайла.Фильтр
= НСтр("ru = 'Лист Microsoft Excel'; en = 'Лист Microsoft Excel'")
+ "(*.xlsx)|*.xlsx;*.xls";
ОписаниеОповещения
= Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтаФорма);
НачатьПомещениеФайлов(ОписаниеОповещения,
, ДиалогОткрытияФайла, Истина, УникальныйИдентификатор);
КонецПроцедуры
|