25 сентября 2011 г.

Новая фича 1С 8.2.14 : Внешние источники данных

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

Если Вы все же хотите попробовать добавить таблицу через второй пункт, то в качестве строки соединения в появившемся окне указываем:
Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\Documents and Settings\Admin\Мои документы\finance3.xls; DriverID=790
В этой строке укажите путь к своему файлуИмя пользователя и пароль я не указывал.
Отмечу, что путь к файлу и строка соединения в дальнейшем не запоминается и нужны эти параметры единожды, чтобы создать автоматически описание полей таблицы источника.
Если соединение прошло нормально, то должен отобразиться список таблиц источника. Флажком можно выбрать нужную таблицу и ее поля.
3. Даем имя новой таблице "Данные". Переходим на вкладку таблицы "Данные". В поле "Имя в источнике данных" указываем имя листа в файле Excel  и добавляем в конце знак "$". В моем случае это "Данные$". В табличной части "Поля" добавляем поля и редактируем их тип.
У каждого поля в свойствах должно быть задано как минимум "Имя" и "Имя в источнике данных".
4. Создаем процедуру в которой пишем подключение к источнику и запрос:
ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных; 
	ПараметрыСоединения.СтрокаСоединения= 
	"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.Таблица.Данные КАК Данные";
	
	ТЗ = Запрос.Выполнить().Выгрузить();
 
Вот и все!