(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Заполнение справочника 1C данными из Excel через механизм OLE

Источник: msexcel
Алексей Шмуйлович

Система 1С позволяет гибко интегрировать приложения,написанные в этой среде с другими приложениями. Имеется возможность как обращаться ко внешним приложениям из кода 1С, так и наоборот, из внешних приложений обращаться к 1С. Рассмотрим пример обращения к 1С из кода на VBA.

Предположим у нас в Excel есть список городов, который нужно внести в справочник 1С Пункты назначения:

Адлер Краснодарский край

Азов Ростовская область

Александров Владимирская область

Анапа Краснодарский край

Арзамас Нижегородская область

Архангельск Архангельская область

Архипо-Осиповка Краснодарский край

Астрахань Астраханская область

Балахна Нижегородская область

и т.п.

Сначала необходимо создать подключение к нужной базе 1С:

Public v8 As Object Dim v8con As New V82.COMConnector

Public Sub v8connect()

       Set v8 = v8con.Connect("Srvr=srv-db10;Ref=holding;Usr=""Алексей Шмуйлович"";pwd=**************")

End Sub

В строку подключения нужно подставить наименование своих сервера, базы, пользователя и пароль. Пользователю 1С, от имени которого происходит подключение, должно быть заранее предоставлено право внешнего подключения. Обратите внимание, для присвоения переменной v8 значения типа V82.COMConnector, как и других агрегатных типов данных системы 1С, использование ключевого слова Set обязательно! Соединение установлено. Переменная v8 предоставляет доступ ко всем свойствам и методам конкретной базы 1С. Правда Вы не получите привычных подсказок VBA с доступными свойствами и методами. Так что для упрощения работы лучше сначала написать код в конфигураторе 1С, а затем уже скопировать его в модуль VBA и лишь немного адаптировать синтаксис и заменить ссылки на абстрактные переменные ссылками на данные Excel. Теперь создадим процедуру заполнения справочника:

Sub ЗаполнитьГорода()

If v8 Is Nothing Then v8connect 'Проверяем, что подключение к 1С установлено

'Получаем ссылку на значение "Россия" справочника Классификатор стран мира, оно понадобится ниже.

Set Россия = v8.Справочники.КлассификаторСтранМира.НайтиПоНаименованию("Россия")

'Начинаем обход строк исходного списка Excel

For Each стр In Sheets("Города").UsedRange.Rows

'Создаем новый элемент справочника и заполняем его свойства

Set спр = v8.Справочники.НКМ_ПунктыНазначения.СоздатьЭлемент

спр.Город = Trim(стр.Cells(1)) 'Функция trim(), помимо того, что удаляет лишние пробелы, преобразует значение к типу Строка.

'Можно было использовать вместо этого конструкцию стр.Cells(1).Value

спр.Регион = Trim(стр.Cells(2))

спр.Страна = Россия

спр.Наименование = спр.Город + ", " + спр.Регион + ", Россия"

спр.Записать

Next

     End Sub

Обратите внимание, после выполнения кода переменная v8 все еще содержит ссылку на 1С и занимает сеанс подключения. Чтобы закрыть сеанс нужно либо в коде присвоить переменной пустое значение (set v8 = Nothing), либо вручную нажать Reset, то есть остановить отладку в редакторе VBA. Я не включил в код сброс переменной сознательно. Обычно запуск сеанса 1С занимает некоторое немалое время. Если с базой через удаленное соединение нужно проделать несколько операций, такое построение кода позволит каждый раз использовать уже установленное ранее соединение.

Заполнение справочника из Excel - лишь пример разнообразных возможностей, предоставляемых механизмос OLE Automation. Вы можете получать данные из справочников, создавать и читать документы 1С, считывать проводки, получать данные из запросов и т.п. Следует только учитывать, что внешнее подключение не может использовать свойства, связанные с интерфейсом 1С, так как объект V82.COMConnector запускается в фоновом режиме без отображения на экране.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 04.06.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Apps for business (corporate)
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Windows Professional 10, Электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Компьютерный дизайн - Все графические редакторы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100