Решения на базе 1С для бухгалтерского, складского и других видов учёта являются если не самыми распространёнными, то, по крайней мере, одними из самых распространённых. Поэтому интеграция с 1С является для разработчика бизнес-приложений почти повседневной задачей.
Работа с 1С из сторонней программы осуществляется с помощью COM-сервера и предполагает два основных способа взаимодействия.
- Работа с объектной моделью 1С;
- Работа с API конфигурации (процедурами и функциями из модуля внешнего соединения).
Рассмотрим первый из них.
Чтобы начать работу с 1С необходимо подключиться к нужной информационной базе через COM-сервер. Для этого необходимо подключить соответствующую сборку.
Ниже показана работа с COM-сервером для технологической платформы версии 8.3 и файловой базы данных.
Подключение сборки осуществляется стандартным способом.
После этого становится доступным пространство имён для работы с 1С и можно подключаться к необходимой информационной базе.
Подключение выполняется путём с помощью метода Connect объекта Connector.
1 2 3 4 5 6 7 8 |
using V83; … private static dynamic Get1CConnection() { COMConnector comConnector = new COMConnector(); dynamic connection = comConnector.Connect("File=\"C:\\1С\\Тестовая\""); return connection; } |
Данный метод выполнит подключение к информационной базе и возвратит объект, через который можно осуществить доступ к её объектной модели.
Чаще всего взаимодействие с 1С предполагает получение данных из информационной базы и добавление данных в неё.
Рассмотрим оба процесса на примере конфигурации для автоматизации учёта книг в библиотеке. Допустим необходимо получить список всех авторов, книги которых есть в библиотеке и реализовать возможность добавления нового автора.
Список авторов можно получить из объектной модели.
1 2 |
dynamic conn = Get1CConnection(); dynamic dataArray1C = conn.Справочники.Авторы.Выбрать(); |
После этого остаётся последовательно обойти полученный список, добавляя данные из его элементов, например, в dataGridView.
1 2 3 4 |
while (dataArray1C.Следующий == true) { grid.Rows.Add(dataArray1C.Наименование); } |
Добавление осуществляется несколько сложнее из-за особенностей объектной модели 1С.
Вначале нужно создать новый элемент справочника. Затем установить его реквизиты (в данном примере это один стандартный реквизит «Наименование») и записать в информационную базу.
1 2 3 |
dynamic a = conn.Справочники.Авторы.СоздатьЭлемент(); a.Наименование = textBox1С.Text; a.Записать(); |
Ниже представлен скриншот работающей программы.
Способ, который рассмотрен в этой статье, позволяет работать не только со справочниками, но также с другим объектами 1С, к которым возможен доступ через COM соединение и является, по сути, «классическим».
Он подходит для любых конфигураций независимо от того, имеется ли у них внешний интерфейс в модуле внешнего соединения (об этом в отдельной статье) или нет.
К недостаткам такого подхода к работе с 1С можно отнести более высокую сложность и трудоёмкость вследствие необходимости работать с объектами конфигурации напрямую.
Добавить комментарий