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