Вот пример работы с 1С 8.х через COMConnector из Excel, делай по аналогии
Получаем подключение к 1С, подключаем к проекту VBA ссылку на библиотеку 1CV81 COMConnector Tipe Library (меню Tools - Refernces).
Код VBS Public v8 As Object
Dim v8con As New V81.COMConnector
Public Sub v8connect()
'Версия для файлового варианта 1С
'Set v8 = v8con.Connect("File=""C:\Путь к папке с конфигурацией""; Usr =""ИмяПользователя"";Pwd=""Пароль""")
'Версия для серверного варианта 1С
Set v8 = v8con.Connect("Srvr=ИмяСервера1С;Ref=ИмяИнформационнойБазы;Usr =""ИмяПользователя"";Pwd=""Пароль""")
End Sub
Пример работы со справочником Контрагенты
Код VBS 'Получение ссылки на элемент справочника Контрагенты
'В системе 1С принято организациями назвать юрлица, бухгалтерский учет которых ведется в информационной системе (свои фирмы).
'Все остальные юрлица учитываются в справочнике Контрагенты. Причем организации также присутствуют в справочнике Контрагенты,
'но не наоборот.
'SpravContragent - функция возвращает логическое значение True, если удалось получить ссылку на элемент справочника Контрагенты
'v8 - объект COMConection, с установленным подключеннием к базе 1С
'INN - Строка ИНН для поиска элемента в справочнике
'Name - Строка Наименования для проверки на соответствие ИНН и наименования (некоторые госучреждения имеют одинаковый ИНН)
'Org - Срока с названием нашей организации. В случае добавления нового контрагента будет создан договор на эту организацию.
'Ref - в эту объектную переменную будет помещена ссылка на элемент справочника в случае успешного исполнения функции
'Message - Строка с сообщением об ошибках и прочих особых обстоятельствах
Public Function SpravContragent(v8 As Object, INN As String, Name As String, Org As String, Ref As Object, Message As String) As Boolean
'Ищем элемент справочника
Set Ref = v8.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", INN)
If Ref.Наименование = "" Then 'Если получили пустую ссылку, создаем нового контрагента
Set Ref = v8.Справочники.Контрагенты.СоздатьЭлемент()
Ref.Наименование = Name
Ref.ИНН = INN
'Предварительно создайте в справочнике Контрагенты папку (группу) "Новые контрагенты"
Ref.Родитель = v8.Справочники.Контрагенты.НайтиПоНаименованию("Новые контрагенты")
Ref.Записать
Set Дог = v8.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент()
Дог.Наименование = "Основной договор"
Дог.Владелец = Ref.ссылка
Дог.Организация = v8.Справочники.Организации.НайтиПоНаименованию(Org)
Дог.ВалютаВзаиморасчетов = v8.Справочники.Валюты.НайтиПоНаименованию("руб")
Дог.ВидДоговора = v8.Перечисления.ВидыДоговоровКонтрагентов.Прочее
Дог.ВедениеВзаиморасчетов = v8.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом
Дог.Записать
Ref.ОсновнойДоговорКонтрагента = Дог
Ref.Записать
'Создаем задачу в системе 1С. Код процедуры CreateTask будет приведен позже. Пока эту строку нужно закомментировать
'CreateTask v8, "Добавлен новый контрагент """ & Name & """. Проверьте правильность заполнения реквизитов.", Ref.ссылка
SpravContragent = True
Else
If Ref.Наименование = Name Then
'Определяем, что делать, если элемент помечен на удаление. Например, снимаем пометку.
If Ref.ПометкаУдаления Then Ref.ПолучитьОбъект.УстановитьПометкуУдаления 0
SpravContragent = True
Else
Message = "Сообщение менеджеру: Контрагент с указанным ИНН найден в справочнике, но его наименование не совпадает с запрошенным (""" & Name & """). Наименование в справочнике """ & Ref.Наименование & """. Свяжитесь с департаментом финансов."
SpravContragent = False
End If
End If
End Function
'Пример использования
Sub testSpravContragent()
Dim text As String
Dim OutRef As Object
If v8 Is Nothing Then v8connect
'Замените параметры вызова функции на правильные наименования и ИНН, чтобы получить ссылку на существующий элемент
If SpravContragent(v8, "Тестовое название", "123456789012", "Тестовая организация", OutRef, text) Then
Debug.Print OutRef.Наименование
Debug.Print text
Debug.Print OutRef.ОсновнойДоговорКонтрагента.Наименование
End If
End Sub
Получаем структуру данных документа для дальнейшего использования в коде
Код VBS Sub RunDocumentStructure()
If v8 Is Nothing Then v8connect
DocumentStructure v8.метаданные.Документы.ПлатежноеПоручениеВходящее
DocumentStructure v8.метаданные.Документы.СчетНаОплатуПокупателю
'DocumentStructure v8.метаданные.Документы...
End Sub
Sub DocumentStructure(Документ) 'Выводит структуру данных документа на лист Excel
'Dim Документ As Object, sht As Worksheet
If v8 Is Nothing Then v8connect
Set sht = ActiveWorkbook.Sheets.Add
sht.Name = Left(Документ.Имя & " Структура", 31)
On Error Resume Next
For Each рек In Документ.Реквизиты
r = r + 1
sht.Cells(r, 1) = "Документ." & рек.Имя
sht.Cells(r, 1).I_nsertIndent -1
sht.Cells(r, 1).Font.Bold = True
sht.Cells(r, 2) = рек.Синоним
sht.Cells(r, 3) = v8.String(рек.тип)
If v8.String(рек.тип) = "Строка" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторыстроки.длина) & ")"
If v8.String(рек.тип) = "Число" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторычисла.разрядность) & "," & v8.String(рек.тип.квалификаторычисла.разрядностьдробнойчасти) & ")"
Next
For Each тч In Документ.Табличныечасти
r = r + 1
sht.Cells(r, 1) = "Документ." & тч.Имя
sht.Cells(r, 2) = "Табличная часть (подчиненная таблица)"
sht.Cells(r, 1).I_nsertIndent -1
sht.Cells(r, 1).Font.Bold = True
For Each рек In тч.Реквизиты
r = r + 1
sht.Cells(r, 1).I_nsertIndent 1
sht.Cells(r, 1).Font.Bold = False
sht.Cells(r, 1) = тч.Имя & "." & рек.Имя
sht.Cells(r, 2) = рек.Синоним
sht.Cells(r, 3) = v8.String(рек.тип)
If v8.String(рек.тип) = "Строка" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторыстроки.длина) & ")"
If v8.String(рек.тип) = "Число" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторычисла.разрядность) & "," & v8.String(рек.тип.квалификаторычисла.разрядностьдробнойчасти) & ")"
Next
Next
sht.Columns("A:B").EntireColumn.AutoFit
End Sub