Курсовая работа: Интеграция удаленных приложений "1С:Предприятие" и MS Access
Также на форме есть окошко "События", где отображаются текущее состояние. Например: "Подключение", "Передача данных" и т.п.
Интерфейс пользователя на стороне сервера выглядит следующим образом:
Рисунок 2 – Приложение на стороне сервера
На форме имеются поля, в которых указаны путь к базу данных 1С, путь, где будет сохранен полученный файл.
После того, как файл получен, необходимо нажать на кнопку "Перенестив1С" и произойдет считывание XML-файла и запись данных в 1С.
Также расположены два окошка. В окне "События" отображаются произошедшие события или текущие состояния. Например: "Получен файл", "Идет запись в 1С" и т.п. В окне "Клиенты" отображается список подключенных в данный момент клиентов (их одновременно может быть несколько).
3. Инструкция для программиста
В качестве интегрируемых приложений использовались 2 приложения: MS Access и 1С: Предприятие. Программное средство разработано в среде Delphi 7. Разработка приложений может быть осуществлена на ОС Windows 2000 и выше с установленным программным средством Delphi 7.
Создано два приложения, одно для работы на стороне клиента (Client.exe), программный код которого находится в модуле Client_U.pas другое на стороне сервера (Server.exe), программный код – в модуле Server_U.pas.
Для работы клиентского приложения необходимо наличие БД Access с таблицами "Сотрудники" и "ДатыОбновлений". Первая таблица содержит поля "ХарактерРаботы", "ТабельныйНомер", "Наименование", "Должность", "ДатаПриема", "Оклад". Вторая таблица содержит поле "Дата".
Для работы серверного приложения необходимо наличие БД 1C:Предприятие с конфигурацией "Бухгалтерия". В справочнике "Подразделения" данной БД должна быть внесена информация о филиале, с которым осуществляется связь.
И клиент, и сервер должны иметь доступ к сети с протоколом TCP/IP.
Программный код реализует выполнение главных функций: доступ к базам данных (Access и 1С Бухгалтерия), работа c XML-файлами, передача файла по сети.
В приложении клиента использованы такие компоненты как поля, в которые заносятся данные об IP-адресе и порте сервера, указывается путь к БД Access, путь, где будет сохранен XML-документ, окно, в котором отображаются произошедшие события. Также добавлены две кнопки: Connect и Отправить Файл. Первая – для связи с сервером; вторая –для передачи XML-файла.
В приложении сервера использованы такие элементы управления, как поле для ввода номера прослушиваемого порта, поле для указания папки, в которую сохраняется полученный XML-документ, а также поле с указанием адреса БД 1С. Кроме этого, на форме добавлены два окна: первое – список подключенных клиентов; второе – произошедшие события. Также есть кнопка "Перенести в 1С", которая необходима для перенесения данных XML-документа в 1С.
В приложении клиента осуществляются такие основные операции как чтение и изменение данных в БД Access, формирование на основе этих данных XML-документа и передача последнего по сети.
Доступ к базе данных MS Access осуществляется с помощью технологии ADO c использованием компонента TADODataSet. Большим плюсом применения этой технологии является то, что она работает напрямую с базой данных Access, а не через ODBC, как, например, при использовании технологии BDE.
Для инициализации подключения к БД необходимо в свойстве ConnectionString указать путь к файлу БД (написан в соответствующем поле), а также некоторые другие атрибуты (Пример: 'Provider = Microsoft.Jet.OLEDB.4.0; Data Source = '+ПУТЬ_К_ФАЙЛУ+'; Persist Security Info=False'). В свойстве CommandText надо указать SQL-запрос для выборки данных (Пример: select*from Сотрудники).
По ходу создания XML-документа вначале идет запрос к таблице "ДатыОбновлений" и чтение последней записи, далее запрос таблице "Сотрудники" и проход по всем записям и атрибутам. В конце снова запрос к таблице "ДатыОбновлений" и запись даты прошедшего только что обновления.
Работа с XML осуществляется при помощи встроенного парсера TXMLDocument, который предоставляет интерфейса доступа к содержимому документа DOM (Document Object Model). Объектная модель XML-документов является представлением его внутренней структуры в виде совокупности определенных объектов. Для удобства эти объекты организуются в некоторую древообразную структуру данных - каждый элемент документа может быть отнесен к отдельной ветви, а все его содержимое, в виде набора вложенных элементов, комментариев и т.д.
Для работы с TXMLDocument необходим либо компонент с таким же именем, либо создание объекта типа IXMLDocument (именно этот вариант и реализован). Для доступа к XML использовались объекты двух типов: IXMLNodeList и IXMLNode. Первый – "узел-список" – позволяет представлять записи в документе как список дочерних объектов, к которым можно обращаться по индексу, удалять, добавлять новые и другое. Второй тип – "узел" – позволяет работать со свойствами и методами конкретной записи. база данный приложение программный access delphi
Для обмена данными, т.е. передачи XML-файлов по сети использована архитектура "клиент-сервер", которая реализована на основе сокетов Indy. Данные передаются по протоколу TCT/IP. Клиенту необходимо для подключения знать IP-адрес сервера, а также, адрес прослушиваемого сервером порта. В Indy используются вызовы блокирующих сокетов. Вызов блокирующего сокета не возвращает управления, пока не выполнит свою задачу, приложение замораживает пользовательский интерфейс. Замораживание происходит, поскольку сообщения обновления, перерисовки и другие сообщения не обрабатываются до окончания вызова блокирующего сокета.
Для работы с сокетами Indy необходимы компоненты IdTCPClient (для клиента) и IdTCPServer (для сервера). Для связи с сервером необходимо указать IP-адрес, а также, адрес прослушиваемого сервером порта. Чтобы инициализировать подключение вызывается метод Connect, для разрыва подключения – Disconnect. XML-файл передается как файловый поток. Передача происходит после вызова метода Send.
В приложении сервера осуществляются такие основные операции как прием пересылаемых файлов, чтение из них информации и запись ее в 1CПредприятие.
При инициализации формы происходит активизация сервера (теми же методами, что и активизация клиента). Компонент IdTCPServer имеет события, реагирующие как на подключение к серверу, так и на отключение. При этом передается параметром поток (типа TIdPeerThread) создаваемый соответствующим соединением. Когда вызывается событие, реагирующее на подключение, то в левом окне приложения (компонент TListBox) записывается DNS-имя соответствующего соединения, являющееся свойством создаваемого потока. При вызове второго события имя соответствующего потока удаляется из списка.
Работа с XML-документом на стороне сервера осуществляется теми же средствами, что и на стороне клиента.
Доступ к объектам 1С Предприятие осуществляется с помощью технологии OLE. Работа с объектами и данными осуществляется на встроенном языке программирования. Для создания OLE объектов 1С используется метод CreateObject('V77.Application'), вызываемый переменной типа OleVariant.
Сначала происходит создание объекта 1С, далее его инициализация (метод Initialize) с указанием адреса подключаемой БД, правами входа, пользователя. Чтобы получить доступ к справочникам надо также создать объект типа OleVariant при помощи метода СоздатьСправочник(ИмяСпр).