Запрос 1С в эксель (либо Аксесс)

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Lame
Сообщения: 24
Зарегистрирован: 25 дек 2007, 10:46

привет всем.

Есть из VBA запрос в 1С на получения каких-либо данных. Запрос получил, поместил его в переменную. Как теперь результат запроса выгрузит в эксель (или акссесс или хотя бы ворд )) ).

Сам код сбсно

Sub Calin1C()

Dim V8 As Object

Set V8 = CreateObject("V8.COMConnector")
Set Con = V8.Connect("Srvr=""Feldman"";Ref=""alfa_trade_2005"";Usr=""Иванов"";Pwd=""1234""")
Set q1 = Con.newObject("Запрос")

q1.Text = "ВЫБРАТЬ Валюты.Наименование ИЗ Справочник.Валюты КАК Валюты"

Set Result = q1.Execute

Set Result = q1.Execute()


End Sub


Получается, что в переменной result резульат запроса (предствяляет из себя таблицу 1С). Как его выгрузить в эксель??? :confused:
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

Обход запроса не работает чтоли
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

Думаю перевести на VB перевсти просто типа строка ТаблЗнач.Получить(сц).НазвВалюты

Код: Выделить всё

	ВалЗапр=Новый Запрос;
	ВалЗапр.Текст="ВЫБРАТЬ Валюты.Наименование Как НазвВалюты ИЗ Справочник.Валюты КАК Валюты";
	ТаблЗнач=ВалЗапр.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой);
	для сц=0 по ТаблЗнач.Количество()-1 цикл
		  Сообщить(ТаблЗнач.Получить(сц).НазвВалюты);
	КонецЦикла;
Lame
Сообщения: 24
Зарегистрирован: 25 дек 2007, 10:46

Скажите а можно ли это сделать средствами VBA. Я ведь из VBa редктор 1С запускаю
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

Lame писал(а):Скажите а можно ли это сделать средствами VBA. Я ведь из VBa редктор 1С запускаю
так Вы же через оле работаете можно, просто проверить времени нет
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

у меня 8.1 Объект замените, далее думаю ясно

Код: Выделить всё

Sub in1c()
    Dim V8 As Object

    Set V8 = CreateObject("V81.COMConnector")
    Set Con = V8.Connect(".....")
    Set q1 = Con.newObject("Запрос")

    q1.Text = "ВЫБРАТЬ Валюты.Наименование Как НазвВалюты ИЗ Справочник.Валюты КАК Валюты"

    Set Result = q1.Execute

    Set Tabl = Result.Выгрузить()
    For i = 0 To Tabl.Количество() - 1
          MsgBox Tabl.Получить(i).НазвВалюты
    Next i

End Sub
Lame
Сообщения: 24
Зарегистрирован: 25 дек 2007, 10:46

MsgBox Tabl.Получить(i).НазвВалюты

говорит нет такого объекта или метода...библиотеки 8 подключены OLE тоже..
Lame
Сообщения: 24
Зарегистрирован: 25 дек 2007, 10:46

MsgBox Tabl.Получить(i).НазвВалюты

говорит нет такого объекта или метода...библиотеки v8 подключены OLE тоже..
Lame
Сообщения: 24
Зарегистрирован: 25 дек 2007, 10:46

MsgBox Tabl.Получить(i).НазвВалюты

говорит нет такого объекта или метода...библиотеки 8 подключены OLE тоже..
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

Lame писал(а):MsgBox Tabl.Получить(i).НазвВалюты

говорит нет такого объекта или метода...библиотеки 8 подключены OLE тоже..
строка запроса "ВЫБРАТЬ Валюты.Наименование Как НазвВалюты ИЗ Справочник.Валюты КАК Валюты"
попробуете разбить на 2 строки
стр=Tabl.Получить(i)
назв=стр.НазвВалюты
2007+1с 8,1 бух 1,6,3,2 работает
Ответить