Triceps


Подписка на обучающие
материалы
* обязательные поля

Интеграция Нетикс Трицепс с продуктами сторонних производителей

В данной статье мы рассмотрим вопросы интеграции с использованием прямого подключения к базе данных Трицепс.

Серверная часть Нетикс Трицепс реализована в виде базы данных Microsoft SQL Server. При этом база данных используется не только как хранилище данных, но и отвечает за часть функционала, за безопасность доступа к данным, за целостность данных.

Для доступа к базе данных рекомендуем создать отдельного пользователя MS SQL Server и в зависимости от целей и задач назначить роли этому пользователю.

Организация разграничения доступа к объектам системы ведется через пользователей Нетикс Трицепс. Данные о пользователях хранятся в таблице User. Подробное описание полей и взаимосвязей с другими таблицами приведено на странице Объектная модель Трицепс.

Также в системе предусмотрено неограниченное количество групп доступа, данные о которых хранятся в таблице SecurityGroup.

Каждый объект в системе имеет ровно одну группу доступа, идентификатор которой хранится в поле SecurityGroupID таблицы базы данных, соответствующей объекту.

Права пользователя Нетикс Трицепс на просмотр и изменение объектов системы хранятся в таблице UserPermission.

Данные карточек и документов Нетикс Трицепс хранятся в таблицах базы данных. Доступ к данным можно организовать напрямую, не учитывая ограничений, накладываемых группами доступа, воспользовавшись правами администратора базы данных.

Более правильным, но при этом несколько более трудозатратным вариантом будет использование контекста безопасности для работы с объектами Трицепс. При использовании этого варианта подразумевается, что для внешнего приложения необходимо создать пользователя, сопоставленного приложению, назначить этому пользователю права, а при работе использовать специальную функцию входа в базу данных: sp_User_login.

Выборка данных.

Без учета контекста безопасности происходит выполнением запроса сразу после подключения приложения к базе данных можно делать выборки по необходимым таблицам, например, для выборки всех контрагентов, в наименовании которых есть сочетание "абв" необходимо выполнить запрос

select * from Agent where name like '%абв%'

При учете контекста безопасности приложения необходимо выполнить два запроса:

exec sp_User_login 'login', 'password', 1, '1.10.18.0', '1.10.18.0', 'computername'
select * from Agent_S where name like '%абв%'

первый возвращает идентификатор пользователя в случае успешного входа пользователя, либо ошибку, если пары логин-пароль нет в таблице User.

Использование суффикса _S подразумевает использование не таблицы, а представления, сопоставленного данной таблице с учетом настроек безопасности. Для гарантии работы только в контексте безопасности рекомендуется запретить созданному пользователю SQL Server прямое обращение к таблицам и оставить только доступ к представлениям и хранимым функциям и процедурам.

Создание новых карточек справочников.

Без учета контекста безопасности происходит выполнением запроса

insert into [Object] (ObjectID, Field1, Field2… ) values (ID, Value1, Value2… )

где вместо [Object] подставляется наименование необходимой таблицы, соответствующей справочнику, вместо FieldN – список полей, необходимых к заполнению, а вместо ValueN – список значений, которыми необходимо заполнить поля создаваемой карточки справочника.

При учете контекста безопасности приложения необходимо выполнить два запроса:

exec sp_User_login 'login', 'password', 1, '1.10.18.0', '1.10.18.0', 'computername'
exec ep_Object_store Value1, Value2…

Создание новых документов.

Документ отличается от карточки справочника тем, что обязательно имеет статусы и описанные правила перехода по этим статусам (жизненный цикл документа или workflow).

Создание документа полностью идентично созданию карточки справочника, за исключением заполнения поля State (состояние или статус документа). Для обеспечения целостности данных и корректной работы системы в целом создавать новые документы необходимо только в статусе черновика (draft), а переводить его между состояниями исключительно используя хранимые процедуры, соответствующие необходимому статусу.

Проведение документа возможно только с использованием контекста безопасности, поэтому если в вашем приложении вы планируете не только создавать черновики документов Трицепс, но и изменять их состояние необходимо создать запись в таблице User для вашего приложения и назначить права доступа вашему приложению.

Пример создания и проведения документа Заказ-наряд в состояние Запланирован.

exec sp_User_login 'login', 'password', 1, '1.10.18.0', '1.10.18.0', 'computername'
exec dbo.ep_Assignment_store

      @ID
      ,@Version
      ,@WarehouseID
      ,@EnterpriseID
      ,@TotalMoney
      ,@PrepayMoney
      ,@CustomerID
      ,@DriverID
      ,@PayerID
      ,@VehicleID
      ,@CustomerName
      ,@CustomerContact
      ,@VendorID
      ,@Model
      ,@VehicleModelID
      ,@CountryID
      ,@Complectation
      ,@Transmission
      ,@FrameModel
      ,@FrameNumber
      ,@EngineNumber
      ,@FrameColor
      ,@Color
      ,@Options
      ,@IssueDate
      ,@IssueDateString
      ,@HaulDistance
      ,@AcquisitionDate
      ,@AcquisitionDateString
      ,@VehicleRegisterNumber
      ,@ShowInCustomerComment
      ,@VehicleType
      ,@MechanicID
      ,@ExaminerID
      ,@StationID
      ,@PostID
      ,@DateTime
      ,@AssignmentDateTime
      ,@Cheque
      ,@ChequeNumber
      ,@ChequeDateTime
      ,@Estimation
      ,@EstimationCost
      ,@CustomerDiscount
      ,@SpentTime
      ,@DateTimeIn
      ,@DateTimeOut
      ,@BalanceTypeID
      ,@AssignmentType
      ,@Description
      ,@CustomerReason
      ,@CustomerRecomendation
      ,@Comment
      ,@State
      ,@Number
      ,@SecurityGroupID

exec sp_Assignment_schedule @ID

Использование этого подхода гарантирует корректную работу клиентского приложения Нетикс Трицепс и целостности данных, корректную нумерацию документов, правильную синхронизацию при работе нескольких филиалов.

Обсуждение закрыто.