МИНИСТЕРСТВООБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕАГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственноеобразовательное учреждение высшего профессионального образования
Южно-Российскийгосударственный технический университет
(Новочеркасскийполитехнический институт)
Волгодонскийинститут (филиал)
Пояснительнаязаписка
ккурсовой работе по дисциплине «Корпоративные информационные системы»
натему: Интеграция удаленных приложений 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С:Предприятие. Программное средство разработано в среде Delphi7. Разработка приложений может быть осуществлена на ОС Windows2000 и выше с установленным программным средством Delphi7.
Создано два приложения, одно для работы на стороне клиента (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 при помощи метода СоздатьСправочник(ИмяСпр).
В приложениях как сервера, так и клиента, использованы обработчикиисключений (try...except...end и try...finally...end) для избежания возможных ошибок. Первый обработчикпозволяет при появлении ошибки, выполнять указанные действия, такие как,например, выдача сообщения об ошибке.
На стороне клиента использованы обработчики исключений при выполнениитаких событий как подключение к серверу (см. пример), подключение к БД Access и передача файла по сети. При возникновении ошибок припервом и втором событии в окне «Сообщения» появляются сообщения отом, что произошла ошибка.
ПРИМЕР:
try
IdTCPClient1.Connect;
except
Memo1.Lines.Add('Ошибка при подключении');
Exit;
end;
На стороне сервера использованы обработчики исключений при выполнениитаких событий как принятие файла от клиента, создание OLE-объекта1С: Предприятие, запись данных в 1С. При возникновении ошибок во втором итретьем событиях в окне «Сообщения» также появляются сообщения о том,что произошла ошибка.
По данным, считанным с XML-документа происходит запись атрибутов в справочник«Сотрудники». При этом сначала проверяется, числится ли такойсотрудник уже на предприятии. Если ответ положительный, то изменяются толькопериодические реквизиты (такие как характер работы и оклад), иначе создаетсяновый сотрудник по следующей схеме:
СправочникСотрудники.Новый
СправочникСотрудники.Записать
К перспективе развития данного программного продукта относитсяобеспечение безопасности и надежности передачи при передаче данных, а такжевозможность расчета заработной платы и других финансовых и налоговых операцийна стороне 1С, с возможностью переслать эти отчеты клиенту.4. Тестовый пример
На рисунках представлены исходные данные:
· На первом – показаны данные о сотрудниках в филиале, взятые из Access (таблица – Сотрудник).
· На втором – данные о датах проводимых до этого обновлений(таблица – ДатыОбновлений).
· На третьем – показаны данные, взятые из 1С, о сотрудниках вголовном офисе.
На рисунке 4 показано, что сотрудница Сверчкова еще числится напредприятии.
/>
Рисунок 1 – данные о сотрудниках в филиале
/>
Рисунок 2 – данные о проводимых обновлениях
/>
Рисунок 3 – данные о сотрудниках в головном офисе
/>
Рисунок 4 – Состояние сотрудницы Сверчковой до обновления данных
После того как на клиентском приложении будет нажата кнопка «Отправить»,произойдет чтение последней записи из таблицы «ДатыОбновлений» (аименно 06.01.1998) из Access. После формируется XML-файла (см. рисунок 5) поданным таблицы «Сотрудники», с учетом даты последнего обновления. Тоесть заносятся данные о тех сотрудниках, где значение поля «ДатаПриема»(она же и дата увольнения, и дата каких-либо изменений периодическихреквизитов) больше даты последнего обновления. Далее происходит передача посерверу.
/>
Рисунок 5 – Вид XML-файла, передаваемого втестовом примере
После этого окно «Состояние» выглядит следующим образом(рисунок 6).
/>
Рисунок 6 – Вид окна «Состояние» после передачи данных
После того как файл передан в БД Access заноситсязапись в таблицу «ДатыОбновлений» (рисунок 7).
/>
Рисунок 7 – Обновление данных таблицы «ДатыОбновлений»
На стороне сервера, после того как файл принят, он по нажатию на кнопку «Перенестив 1С» записывается в 1С. При записи сначала проверяется, есть ли ужесотрудник с таким табельным номером. Если ответ положительный, то обновляютсяпериодические атрибуты (подразделение, характер работы, оклад), иначезаписывается новый сотрудник. При этом окно «Состояние» выглядитследующим образом (рисунок8).
/>
Рисунок 8 – Вид окна «Состояние» после обновления данных
/>
Рисунок 9 – данные о сотрудниках в головном офисе после обновления
/>
Рисунок 10 – Состояние сотрудницы Сверчковой после обновления данных
По рисункам 9 и 10 видно, что обновление данных прошло успешно.
Список литературы
1. Практикапрограммирования: Delphi. – СПб.:БХВ-Петербург, 2002. – 464 с.: ил.
2. АрхангельскийА.Я. Приемы программирования в Delphi.- М.: ООО «Бином-Пресс», 2003.
3. Учебник по 1С. Адрес: www.mista.ru.