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

cilindr

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

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

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

excel

рис.1

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

new_object

рис.2

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

table

рис.3

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

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

fields

рис.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.Таблица.ТаблицаДанных КАК ТаблицаДанных»;

ТЗ = Запрос.Выполнить().Выгрузить();
Сообщить(«Подключено»);
КонецПроцедуры

 

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

debug

рис.5

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

Поделитесь своим мнением

Свежие записи
Советы и помощь программиста в 1с © 2018 ·   Войти   · Наверх