Передача открытого файла EXCEL на сервер 1С Предприятие 8.3
Обработчик открытия EXCEL файла для дальнейшей обработки данных на 1С
Добавить реквизит для указания пути в файлу EXCEL
Добавить команду для запуска обработки
Вывести элементы на путь к файлу и команду обработки
У элемента пути указать обязательно кнопку выбора файла
У элемента пути добавить обработчик события НачалоВыбора
Код модуля:
&НаКлиенте
Процедура ЗапуститьОбработчик(Команда)
Если ПроверкаПоляПутьКФайлу(ФайлИмпорта) = Ложь Тогда
Возврат;
КонецЕсли;
Если ПроверитьСуществованиеФайла(ФайлИмпорта) = Ложь Тогда
Сообщить("Не найден файл импорта");
Возврат;
КонецЕсли;
ДвоичныеДанные = Новый ДвоичныеДанные(ФайлИмпорта);
Идентификатор = Новый УникальныйИдентификатор;
ОбработкаНоменклатуры(ПоместитьВоВременноеХранилище(ДвоичныеДанные, Идентификатор));
КонецПроцедуры
&НаСервере
Функция ОбработкаНоменклатуры(ДанныеДляОбработки)
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДанныеДляОбработки);
РасшФайла = ПолучитьИмяВременногоФайла("xlsx");
ДвоичныеДанные.Записать(РасшФайла);
ДокументДляОбработки = new ТабличныйДокумент;
ДокументДляОбработки.Прочитать(РасшФайла);
Лин = 0;
Стр = Новый Массив;
Попытка
Пока Лин = 0 ИЛИ Стр[1] <> "" Цикл
Лин = Лин + 1;
Стр = Новый Массив;
Стр.Добавить(ДокументДляОбработки.Область("R" + Формат(Лин, "ЧГ=0") + "C1").Текст);
Стр.Добавить(ДокументДляОбработки.Область("R" + Формат(Лин, "ЧГ=0") + "C2").Текст);
Стр.Добавить(ДокументДляОбработки.Область("R" + Формат(Лин, "ЧГ=0") + "C3").Текст);
Стр.Добавить(ДокументДляОбработки.Область("R" + Формат(Лин, "ЧГ=0") + "C4").Текст);
// ...
// Обработка
// ...
КонецЦикла;
Исключение
Сообщить("Ошибка чтения EXCEL файла:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
КонецФункции
&НаКлиенте
Процедура ФайлИмпортаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбора.ПолноеИмяФайла = "file.xlsx";
ДиалогВыбора.Фильтр = "Файл данных (*.xlsx)|*.xlsx";
ДиалогВыбора.Заголовок = "Выберите файл";
Если ДиалогВыбора.Выбрать() Тогда
ФайлИмпорта = ДиалогВыбора.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьСуществованиеФайла(ПутьКФайлу)
ФайлНаДиске = Новый Файл(ПутьКФайлу);
Если ФайлНаДиске.Существует() Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ПроверкаПоляПутьКФайлу(ПутьКФайлу)
Если "" + ПутьКФайлу = "" Тогда
Сообщить("Не указан путь к файлу");
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции