Всем привет!
Довольно часто от клиентов возникает разовая задача "загрузи мне из excel в 1С", лично я быстренько пишу внешнюю обработку для загрузки. Но постоянно теряю свой шаблон кода для выбора файла и передачи его на сервер. Поэтому я решил сделать небольшую шпаргалку-копипасту, может быть она еще кому-нибудь пригодится, поэтому берите, не стесняйтесь)))
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Фильтр = "(*.xlsx*)|*.xlsx*";
Диалог.Фильтр = Фильтр;
Диалог.МножественныйВыбор = Ложь;
Диалог.Заголовок = "Выберите файл Excel";
Если Диалог.Выбрать() Тогда
МассивФайлов = Диалог.ВыбранныеФайлы;
Для Каждого ИмяФайла Из МассивФайлов Цикл
ПутьКФайлу = ИмяФайла;
КонецЦикла;
КонецЕсли;
ПрочитатьФайл();
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьФайл()
НачатьПомещениеФайлаНаСервер(Новый ОписаниеОповещения("ПослеЗагрузкиФайла", ЭтотОбъект),,,,ПутьКФайлу, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗагрузкиФайла(ОписаниеПомещенногоФайла, ДополнительныеПараметры) Экспорт
Если ОписаниеПомещенногоФайла <> Неопределено Тогда
ПрочитатьФайлExcelВТаблицуЗначений(ОписаниеПомещенногоФайла.Адрес, ОписаниеПомещенногоФайла.СсылкаНаФайл.Расширение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьФайлExcelВТаблицуЗначений(АдресДанных, РасширениеФайла)
ПутьКфайлу = ПолучитьИмяВременногоФайла(РасширениеФайла);
Данные = ПолучитьИзВременногоХранилища(АдресДанных);
Попытка
Данные.Записать(ПутьКфайлу);
Исключение
Сообщить("Что-то пошло не так");
Возврат;
КонецПопытки;
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ПутьКфайлу);
ПостроительЗапроса = Новый ПостроительЗапроса;
Источник = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область(1,1, ТабличныйДокумент.ПолучитьРазмерОбластиДанныхПоВертикали(), ТабличныйДокумент.ПолучитьРазмерОбластиДанныхПоГоризонтали()));
ПостроительЗапроса.ИсточникДанных = Источник;
ПостроительЗапроса.Выполнить();
ТаблицаРезультат = ПостроительЗапроса.Результат.Выгрузить();
КонецПроцедуры
На форме создаете реквизит ПутьКФайлу с типом строка, выносите его на форму и создаете событие НачалоВыбора. Собственно всё, дальше можно просто скопировать то, что выше и вставить к себе.
Надеюсь, кому-то тоже поможет сэкономить лишние 5-10 минут своего времени)
Мира, добра и позитива :)
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.202.14
Вступайте в нашу телеграмм-группу Инфостарт