Построитель запроса. Табличный документ. Загрузка из Excel

15.11.2021 08:20:44   Вася Котов (freenet)    11875

Интересные возможности объектов ТабличныйДокумент и ПостроительЗапроса, которые позволяют загружать данные из Excel без установки Excel

Пример:
https://bitbucket.org/ayvas/workspace/snippets/yXEkBz

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;

ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("ОбработкаВыбораФайлов", ЭтаФорма));

КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбораФайлов(СписокФайлов, ДополнительныеПараметры) Экспорт

ПутьКФайлу = СписокФайлов[0];

КонецПроцедуры // ()

&НаСервере
Функция ПрочитатьТабличныйДокумент(ТабличныйДокументИсточник)

КоличествоСтолбцов = ТабличныйДокументИсточник.ШиринаТаблицы;

Если КоличествоСтолбцов = 0 Тогда
  Возврат Новый ТаблицаЗначений;
КонецЕсли;

ТабличныйДокумент = Новый ТабличныйДокумент;
Для НомерСтолбца = 1 По КоличествоСтолбцов Цикл
  ТабличныйДокумент.Область(1, НомерСтолбца, 1, НомерСтолбца).Текст = "Номер_" + Формат(НомерСтолбца,"ЧГ=0");
КонецЦикла;

ТабличныйДокумент.Вывести(ТабличныйДокументИсточник);

Построитель = Новый ПостроительЗапроса;

Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
Построитель.Выполнить();
ТаблицаЗначенийРезультат = Построитель.Результат.Выгрузить();

Возврат ТаблицаЗначенийРезультат;

КонецФункции

&НаКлиенте
Процедура ЗаполнитьИзФайла(Команда)

ЗаполнитьИзФайлаНаСервере();

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьИзФайлаНаСервере()

ТабличныйДокументДанные.Прочитать(ПутьКФайлу);

КонецПроцедуры

&НаКлиенте
Процедура ПолучитьДанные(Команда)

ПолучитьДанныеНаСервере();

КонецПроцедуры

&НаСервере
Процедура ПолучитьДанныеНаСервере()

Данные = ПрочитатьТабличныйДокумент(ТабличныйДокументДанные);

КонецПроцедуры

Категории:
 Программирование

Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. asupigor 31.10.23 07:37 Сейчас в теме
Спасибо большое, очень помогло!
Оставьте свое сообщение
Антон Иванов. Жажда программирования – темный попутчик разработчика
Тимур Кашафутдинов. Логирование в приложениях
Юрий Былинкин. OneScript для новичков
Эмиль Карапетян. DDD, модульная архитектура и 1С – что общего
Антонов Антон. Сервер 1С в контейнерах или другое направление DevOps
Сергей Голованов. Git vs Хранилище. Битва титанов?
Юрий Былинкин. Релиз каждый день – это тоже релиз!
Андрей Крапивин. Бей мутантов – спасай код
Артем Кузнецов. Быстрый фронт в базе размером 8.8 терабайт – наши стандарты при разработке
Никита Авдеев. Copilot – твой парный ИИ-программист