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