Тема: Заголовочные реквизиты.

Для Заголовочных реквизитов умолчания действуют для всех пользователей TechnologiCS.  Если у 2-х конструкторских отделов с разной тематикой все реквизиты разные пишем скрипт? Может кто-то уже сталкивался, кодом поделиться? Или советом? А то не успеваем... :rolleyes:

Re: Заголовочные реквизиты.

Заголовочные реквизиты - наследство еще самого первого TechnologiCS. Их можно использовать в самых простейших случаях - когда технология (состав) в одних руках.
Для более сложных поцессов (например, децентрализованная подготовка производства) приходится использовать другие механизмы - разработчики, проверяющие и нормоконтролеры могут быть взяты, как вариант, из рабочих групп.
Соответственно, решение задачи состоит в настройке отчетов с использованием функций API. Пример отчета попробуем выложить в ближайшее время с комментариями.

Re: Заголовочные реквизиты.

Вот пример функции, возвращающей фамилию Начальника ТБ цеха. При этом подразумевается, что пользователь, получающий отчет, выполняет роль Разработчик в рабочей группе цеха.

Public Function GetNachTB(IsD, DopIsD, Ms) As String

Dim Usr                             ' справочник пользователей
Dim WrkGroup_Usr        ' Рабочие группы - где задействован пользователь
Dim Id                                ' Просто Integer
Dim WRK_GROUP_ID   ' Идентификатор рабочей группы
Dim UsersWrk                 ' Пользователи рабочей группы
Dim Wrkgr                         ' Справочник рабочих групп

Set Usr = TCSApp.Users
Usr.UserModuleName = Usr.UniqueUserModuleName

WRK_GROUP_ID = 0   

   If Usr.Locate("NAME", TCSApp.LoginUserName, 0) Then
   
       Set WrkGroup_Usr = Usr.Properties("WORKGROUPS").AsIDispatch
       WrkGroup_Usr.UserModuleName = WrkGroup_Usr.UniqueUserModuleName
       
       Do While Not WrkGroup_Usr.EOF
        If Not (WrkGroup_Usr.Properties("FIRED").AsBoolean) And (InStr(WrkGroup_Usr.Properties("OFFICER_NAME").asstring, "Разработчик") > 0) Then
               WRK_GROUP_ID = WrkGroup_Usr.Properties("ID").asInteger
        End If
       WrkGroup_Usr.Next
       Loop
   End If
 
  Set Wrkgr = TCSApp.WorkGroups
  Wrkgr.UserModuleName = Wrkgr.UniqueUserModuleName

  If WRK_GROUP_ID > 0 Then
  If Wrkgr.Locate("ID", WRK_GROUP_ID, 0) Then
     Set UsersWrk = Wrkgr.Properties("USERS").AsIDispatch
     UsersWrk.UserModuleName = UsersWrk.UniqueUserModuleName
     If UsersWrk.Locate("OFFICER_NAME", "Начальник ТБ цеха", 0) Then
        GetNachTB = UsersWrk.Properties("USER_NAME").asstring
     Else
     GetNachTB = ""
     End If
   Call TCSApp.DeleteModuleByUserModuleName(UsersWrk.UserModuleName)
  End If
  End If
   Call TCSApp.DeleteModuleByUserModuleName(Wrkgr.UserModuleName)

   Call TCSApp.DeleteModuleByUserModuleName(WrkGroup_Usr.UserModuleName)
   Call TCSApp.DeleteModuleByUserModuleName(Usr.UserModuleName)
   
End Function

Re: Заголовочные реквизиты.

Спасибо.