Back to top

Внешние источники данных 1С на примере Excel

Опубликовано e-1c@mail.ru - вт, 05/23/2017 - 05:06

Для работы с данными не 1с, например: база SQL, база Access, файл Excel и многие другие, в технологическую платформу, начиная с версии 8.2.14 был внедрен механизм(объект), под названием Внешние источники данных.

Давайте в данной статье рассмотрим, как взаимодействует данный объект с привычным нам Excel файлом. К примеру, существует необходимость с какой то периодичностью считывать данные с *.xls файла в базу 1С. Если раньше нам необходимо при помощи Com объектов производить инициализацию, затем создавать таблицу значений, построчно считывать данные, то теперь данные манипуляции попросту отпадают. При использовании Внешнего источника данных мы можем обращаться при помощи запросов и мгновенно получать данные.

Допустим у нас есть книга Excel следующего содержания. Из которого нам необходимо считать данные.

vnesh1.jpg

рис.1

Первым делом в режиме конфигуратора добавляем новый источник данных и назовем его также Excel.

vnesh2.jpg

рис.2

Теперь нам необходимо добавить данных, то таблицу с теми полями которые будут у нас в 1С. Создадим их аналогично тому как названы колонки в файле. Для этого заходим в созданный объект и во кладке Данные жмем добавить. Здесь настоятельно рекомендую производить создание вручную, так как довольно часто бывают проблемы, когда 1с-ина пытается сама произвести автоматическую настройку.

vnesh3.jpg

рис.3

Наименование нашей таблицы присвоим ТаблицаДанных. После этого переходим во вкладку Данные и создаем поля (аналогичные файлу).

В свойствах каждого поля необходимо указать Имя, Тип и Имя в источнике данных(идентично файлу).
Присваиваем Имя в источнике данных. Здесь мы указываем наименование листа в *. xls с добавлением в конце символа «$». У нас Лист1$.
Обязательно указываем Поля Ключа. Здесь из теории БД необходимо указать, то поле по которому будет обеспечивать полную уникальность строки.
Поле представления- указываем то поле, которое обеспечит краткое представление строки, в нашем случае Номенклатура.

vnesh4.jpg

рис.4

Все! На этом собственно и вся настройка. Далее необходимо просто в любой процедуре указать строку соединения и после подключения можно работать с источником данных.

Строка соединения для файлов 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;

Создадим новую внешнюю обработку, которая будет подключаться и сообщать о подключении.

Процедура КнопкаВыполнитьНажатие(Кнопка)
ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединения.СтрокаСоединения=
«Driver={Microsoft Excel Driver (*.xls)};DriverID=790; DBQ=D:\fruit.xls; «;
ВнешниеИсточникиДанных.Excel.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.Excel.УстановитьСоединение();
 
Запрос = Новый Запрос();
 
Запрос.Текст = «ВЫБРАТЬ
| ТаблицаДанных.Код,
| ТаблицаДанных.Номенклатура,
| ТаблицаДанных.ЕдИзм,
| ТаблицаДанных.Количество
|ИЗ
| ВнешнийИсточникДанных.Excel.Таблица.ТаблицаДанных КАК ТаблицаДанных»;
 
ТЗ = Запрос.Выполнить().Выгрузить();
Сообщить(«Подключено»);
КонецПроцедуры

Если мы установим точку останова и посмотрим, что у нас в ТЗ, то мы увидим следующее:

vnesh5.jpg

рис.5

P.S. В самом файле Excel до наименования полей не должно быть никаких пустых строк, иначе будет возникать ошибка odbc. sqlstate 07002 ( драйвер odbc excel слишком мало параметров).