helpf.pro
Регистрация
 +14 
Распечатать

Excel файл как Внешний источник данных

Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто.
1. В конфигурации добавляет новый объект метаданных типа "Внешние источники данных" и назовем его просто "Excel".
title

2. На закладке "Данные" созданного объекта "Excel" добавляем новую таблицу. При этом появится окно мастера добавления таблицы внешнего источника.
Выбираем первый пункт "Вручную", т.к. лично у меня второй пункт "Выбрать из списка таблиц внешнего источника данных" работает нестабильно.
title


Если Вы все же хотите попробовать добавить таблицу через второй пункт, то в качестве строки соединения в появившемся окне указываем:
Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\Documents and Settings\Admin\Мои документы\finance3.xls; DriverID=790
В этой строке укажите путь к своему файлу. Имя пользователя и пароль я не указывал.
Отмечу, что путь к файлу и строка соединения в дальнейшем не запоминается и нужны эти параметры единожды, чтобы создать автоматически описание полей таблицы источника.
Если соединение прошло нормально, то должен отобразиться список таблиц источника. Флажком можно выбрать нужную таблицу и ее поля.
3. Даем имя новой таблице "Данные". Переходим на вкладку таблицы "Данные". В поле "Имя в источнике данных" указываем имя листа в файле Excel и добавляем в конце знак "$". В моем случае это "Данные$". В табличной части "Поля" добавляем поля и редактируем их тип.
title

У каждого поля в свойствах должно быть задано как минимум "Имя" и "Имя в источнике данных".
4. Создаем процедуру в которой пишем подключение к источнику и запрос:
Код 1C v 8.х
 ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных; 
ПараметрыСоединения.СтрокаСоединения=
"Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\Documents and Settings\Admin\Мои документы\finance2.xls; DriverID=790";
ВнешниеИсточникиДанных.Excel.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.Excel.УстановитьСоединение();

Запрос = Новый Запрос();

Запрос.Текст = "ВЫБРАТЬ
| Данные.date КАК Дата,
| Данные.time КАК Время,
| Данные.account КАК Счет,
| Данные.amount КАК Сумма,
| Данные.currency КАК Валюта,
| Данные.category КАК Категория,
| Данные.parent КАК КатегорияРодитель
|ИЗ
| ВнешнийИсточникДанных.Excel.Таблица.Данные КАК Данные";

ТЗ = Запрос.Выполнить().Выгрузить();


Вот и все!
Источник: passion-programmer



Параметры соединения для файла Excel выглядят вот так:

Файлы XLSX (версия Office 2007 и выше)
Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=D:\ФайлExcel.xlsx;

Файлы XLS (ранее)
Driver={Microsoft Excel Driver (*.xls)}; DriverID=790; DBQ=D:\ФайлExcel.xls;
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 48700
 +14 
Распечатать
Возможно, вас также заинтересует
ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За
Активация открытой книги Excel для корректировки 0
Нужно было получить для изменения уже открытую книгу Excel, а если она закрыта, то открыть и изменять. Ниже код, который данную задачу решает. Попытка Эксель = Неопределено; Книга = Неопределено; Лист = Неопределено; Состояние(" Выполняется
Быстрая выгрузка отчетов в Excel, наложение Фильта и отображение ярлыка 0
Вместо Таб.Показать() используем глобальную функцию - и отчет показывается сразу в Excel в удобоваримом виде - с форматированием колонок по ширине, автофильтром и ярлычками листов Процедура глОткрытьВЭкселе(Таб,ИмяФайла=" " ,НеИзменятьВысотуСтроки=0
Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet
Быстрая функция чтения данных с листа Excel 10
При чтении файла Excel я использую вариантный массив. Он позволяет быстро получить ВСЮ таблицу листа в память, а также получать данные массива целыми колонками. Тем самым время на чтение области файла Excel в таблицу значений сокращается в десятки ра
Посмотреть все результаты поиска похожих
Комментарии
r-guliev
15.05.2016 21:57Комментарий: 5
r-guliev

Для тех кто в "танке"...  прошу прощения...  "4. Создаем процедуру в которой пишем подключение к источнику и запрос:"  в каком модуле создать процедуру и как её назвать? 

E_Migachev
27.08.2014 18:11Комментарий: 4
E_Migachev

mrminer, данным примером получается ты просто считываешь данные в ТЗ, а из ТЗ ужи считывай что надо и с какой надо строки

mrminer
27.08.2014 11:06Комментарий: 3
mrminer

Как мне указать, что строка 4 это заголовок таблицы excel, а со следующей начинаются данные? Как использовать функции внешних источников данных для добавления в таблицу excel? Допустим написал я скрипт Select_slice_last(...) в книге excel. Как мне добавить таблицу с видом таблицы выражение, которая бы вызывала эту функцию и возвращала необходимые данные?

NNST12
08.05.2013 11:06Комментарий: 2
NNST12
+ !
Trooper
23.04.2013 16:52Комментарий: 1
Trooper
Мои комментарии по сему вопросу, то как я подключаюсь:

Это для х32 Офиса
Driver={Microsoft Excel Driver (*.xls)}; DBQ=D:\ФайлExcel.xls; DriverID=790";

Это для х64 Офиса
Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=D:\ФайлExcel.xls;

Обратите внимание!
Если у вас 1С крутится на сервере х64 то вам необходимо иметь соответствующие драйвера ODBC. Вручную у меня не получилось их подвязать, поэтому поставил второй офис х64
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.