МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
Южно-Российский государственный технический университет
(Новочеркасский политехнический институт)
Волгодонский институт (филиал)
Пояснительная записка
к курсовой работе по дисциплине "Корпоративные информационные системы"
на тему: Интеграция удаленных приложений 1С Предприятие и MS Access
Волгодонск 2007
Содержание
1. Постановка задачи
2. Инструкция для пользователя
3. Инструкция для программиста
4. Тестовый пример
Список литературы
1. Постановка задачи
Нередки случаи, когда предприятие имеет несколько территориально удаленных филиалов. В этом случае возникает задача упорядочивания их совместной работы в рамках одного предприятия – передачи и обновления необходимых данных между главным офисом и филиалами.
Предположим, в главном офисе предприятия основная база данных сотрудников была организована в "1С: Предприятие" в типовой комплексной конфигурации "Бухгалтерия". В филиалах базы данных сотрудников организованны в MS Access. В базе данных главного офиса должны храниться все данные о сотрудниках, работающих в филиалах, а так же должен вестись учет об уволенных и вновь принятых сотрудниках, производиться расчет зарплаты и другие финансовые и налоговые операции. Поэтому необходимо, чтобы главный офис и филиалы обменивались данными.
Таким образом, заача сводится к обновлению в головном офисе данных о сотрудниках удаленных филиалов.
Также существует такая проблема как сложность передачи данных между различными базами данных, т.е. в каком виде передавать необходимые данные. В данной работе организация передачи данных по сети производится посредствам сокетов. Данные передаются в виде динамически формирующегося на стороне клиента XML-файла.
2. Инструкция для пользователя
Программное средство было разработано в среде Delphi. Приложения могут использоваться в ОС Windows 2000 и выше.
И клиент, и сервер должны иметь доступ к сети с протоколом TCP/IP.
Для использования данной программы необходимо открыть файл "Клиент.exe". При его запуске пользователю предоставляется интерфейс, следующего вида:
Рисунок 1 - Приложение на стороне клиента
Содержимое полей "Порт сервера", "IP сервера" является статичным, т.е. известно заранее. Чтобы произошло соединение, пользователь должен нажать на кнопку "Connect", при этом название кнопки измениться на "Disconnect" и соответственно измениться функция – при нажатии на нее произойдет отключение от сервера.
Затем пользователь на клиентской стороне нажимает кнопку на форме "Отправить файл". При этом сначала происходит чтение данных с БД Access (обращается к БД, указанной в нижним поле), и формирование, по ходу чтения, XML-файла, сохраняющегося в месте, указанном в соответствующем поле. При этом в файл заносятся только обновленные данные, то есть изменения данных о сотрудниках, которые произошли с периода последнего обновления. Кроме данных о сотрудниках, файл содержит такие данные как дата обновления, от кого эти обновления и префикс, необходимый для создания уникального табельного номера (ТН) на стороне 1С (ТН_1С = ‘префикс’ + ТН_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-имя соответствующего соединения, являющееся свойством создаваемого потока. При вызове второго события имя соответствующего потока удаляется из списка.