Пытаюсь тянуть данные из 1С через com соединение. Подключение к базе проходит успешно ( инструкция - http://forum.msexcel.ru/index.php?topic=4341.0 ) Текст запрос в 1С отправляется и выполняется также успешно. Проблемы возникают на этапе, когда в VBA поступает результат выполнения запроса - объект таблицы значений - в созданный для этого Variant объект VBA. Дело в том что стандартный 1с синтаксис для доступа к строкам и столбцам предполагает использование квадратных скобок - например Данные1С [НомерСтроки].НаименованиеСтолбца. VBA такую синтаксическую конструкцию не поддерживает, и вставляет точку с запятой перед квадратной скобкой. Циклы вида
Код
For Each Колонка In ResultTable.Колонки
For Each Строка in Колонка.Строки
Debug.print Строка.Текст
Next Строка
Next Колонка
ломаются на переборе строк в колонке (1С видимо не имеет такого метода).
Как вариант выгружать на лист, загружать с него в массив и обрабатывать стандартными методами.
Проблема как раз в том что я не могу выгрузить результат полученного запроса на лист, потому что результат обращения к 1С базе через язык запросов 1С (грубо говоря - аналог SQL для 1С) - это объект 1С (Таблица запросов, он называется в терминологии 1С).
Код
А можно увидеть в каком виде
P.lankton написал: в VBA поступает результат выполнения запроса - объект таблицы значений
А как это сделать? Все до чего я дошел - это убедиться что это объект, через Typename(). Также я проверил что это именно объект 1С, т.к. использование в VBA методов работы с 1С таблицей значений возвращают верный результат.
При переборе строк в колонке можно использовать конструкцию с использованием названия колонки
Код
Do While ResultTable.Следующий()
Debug.Print ResultTable.НАЗВАНИЕ_КОЛОНКИ
Loop
При этом название колонки явно задается в строке запроса (в моем случае ВЫБРАТЬ ХозрасчетныйДвиженияССубконто.Период КАК Период ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто