Алгоритм выгрузки из 1С в Access
Работающий алгоритм выгрузки из 1С в Access. Понадобилось выгрузить отчет в ACCESS, пришлось разбираться.
- Описание
- Подробнее
Описание
Пришлось перекопать множество материалов пока не наткнулся на книгу А. Михайлова «1C: Предприятие 7.7/8.0: системное программирование. Данный код можно использовать в отчетах для их выгрузки в файл ACCESS.
//Создаем файл Access
dbe = Новый COMОбъект(«DAO.DBEngine.36»);
wksp = dbe.Workspaces(0);
db = 0;
Имя = «С:\Темр»;
ИмяФайла = «File»;
Путь = Имя + «\»+ИмяФайла+».mdb»;
db = wksp.CreateDataBase(Путь,»;LANGID=0x0419;CP=1251;COUNTRY=0″);
wksp.Close();
dbe = Неопределено;
СтрокаПодключения = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=» + Путь;
// Создание таблицы
// Начальная инициализация
Catalog = Новый COMОбъект(«ADOX.Catalog»);
Catalog.ActiveConnection = СтрокаПодключения;
// Создание новой таблицы
Table = Новый COMОбъект(«ADOX.Table»);
// Имя таблицы
Table.Name = «DistrSalesReport»;
// Создание новой колонки
// Допустимые типы
// adDouble = 5 Значение с плавающей точкой двойной точности
// adDAte = 7 Дата
// adCurrency = 6 Денежная сумма
// adBoolean = 11 Булево
// adVarWChar = 202 Символьная строка Unicode, заканчивающаяся NULL
// adLongVarWChar = 203 Длинное строковое значение
Column = Новый COMОбъект(«ADOX.Column»);
// Имя колонки
Column.Name = «IdRow»;
Column.Type = 5; // Число
// Присоединение колонки к таблице
Table.Columns.Append(Column);
Column = Новый COMОбъект(«ADOX.Column»);
// Имя колонки
Column.Name = «PRRDistribCode»;
Column.Type = 202; // Строка
// Присоединение колонки к таблице
Table.Columns.Append(Column);
// Присоединение созданной таблицы (листа)
Catalog.Tables.Append(Table);
СтрокаПодключения = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source=» + Путь + «;»»»;
Connection = Новый COMОбъект(«ADODB.Connection»);
Попытка
Connection.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Запись = Новый COMОбъект(«ADODB.RecordSet»);
ТекстЗапроса = «SELECT * FROM DistrSalesReport»;
Запись.Open(ТекстЗапроса, Connection, 1, 3);
Indy = 0;
//Здесь ваш запрос или тз для выгрузки
//Бежим по выборке запроса 1С
Пока Выборка.Следующий() Цикл
Indy = Indy + 1;
// Добавление новой записи в колонки
Запись.AddNew();
Запись.Fields(0).Value = Indy;
Запись.Fields(1).Value = «Какая то строка»;
Запись.UpDate();
КонецЦикла;
// Закрываем соединение
Connection.Close();
Connection = Неопределено;
//проверяем файл
