понедельник, 26 марта 2012 г.

Добавление в секцию файлы карточки 'Список файлов' файла

'Данная процедура добавляет в секцию файлы карточки 'Список файлов' файл.
'Параметры процедуры:
' UserSession - сессия пользователя
' FileName - полное имя файла.
' ShortFileName - краткое имя файла
'  SectionFilesOfCardFilesList - секция файлы карточки Список файлов
Sub AddFileInSectionFiles(UserSession, FileName, ShortFileName, SectionFilesOfCardFilesList)
On Error Resume Next
Const ID_FILESLISTCARD = "{BFC9D190-BCD6-411A-B9F9-3160D3F68819}" ' ИД схемы карточки список файлов
Const ID_FILECARD = "{2BBD0A41-265E-4FF8-82D6-C6342F34B1AF}" ' ИД схемы карточки файла
Const ID_VFILECARD = "{6E39AD2B-E930-4D20-AAFA-C2ECF812C2B3}" ' ИД схемы карточки файла с версиями

'Загружаем файл
Set File = UserSession.FileManager.CreateFile(ShortFileName)
File.Upload FileName

' Создаем карточку файла
Set oCardFile = UserSession.CardManager.CreateCardData(ID_FILECARD)
' Создаем карточку файла с версиями
Set oCardFileVers = UserSession.CardManager.CreateCardData(ID_VFILECARD)
' Получаем строку основной секции карточки файла
Set RowCardFile = oCardFile.Sections(oCardFile.Type.Sections.GetByAlias("MainInfo").ID).FirstRow
' Получаем строку основной секции карточки файла с версиями
Set RowCardFileVers = oCardFileVers.Sections(oCardFileVers.Type.Sections.GetByAlias("MainInfo").ID).FirstRow
' Получаем секцию Versions карточки файла с версиями
Set SectVersCardFileVers = oCardFileVers.Sections(oCardFileVers.Type.Sections.GetByAlias("Versions").ID)
' Добавляем новую строку в секцию Versions карточки файла с версиями
Set NewRowFileVers = SectVersCardFileVers.Rows.AddNew
' Заполняем поля новой строки cекции Versions значениями
NewRowFileVers.Value("FileID") = File.ID
NewRowFileVers.Value("Version") = 0
NewRowFileVers.Value("VersionNumber") = 1
curuser = GetCurrentUser(UserSession)
If curuser="" Then Exit sub
NewRowFileVers.Value("AuthorID") = curuser

' Заполняем поля строки основной секции карточки файла с версиями значениями
RowCardFileVers.Value("CurrentID") = NewRowFileVers.ID
RowCardFileVers.Value("Name") = ShortFileName
RowCardFileVers.Value("NextVersion") = 1
' Заполняем поле FileID строки основной секции карточки файла ИД карточки файла с версиями
RowCardFile.Value("FileID") = oCardFileVers.ID

' Добавляем новую строку в секцию Ссылки на файлы карточки список файлов
Set NewRow = SectionFilesOfCardFilesList.Rows.AddNew
' Заполняем поле CardFileID новой строки ИД карточки файла
NewRow.Value("CardFileID") = oCardFile.ID
End Sub

'Функция получает текущего пользователя по аккаунту
Function GetCurrentUser(UserSession)  
' ИД схемы справочника сотрудников
   Const DIC_STAFF = "{6710B92A-E148-4363-8A6F-1AA0EB18936C}"
   Dim Groups, oRows, FindUserID
   GetCurrentUser=""

   Set RefStaff = UserSession.CardManager.DictionaryData(DIC_STAFF)
   If RefStaff Is Nothing Then
      msgbox "Ошибка получения справочника сотрудников. За помощью обратитесь к администратору."
      Exit Function
   End If

   Set SectionEmployeesRefStaff = RefStaff.Sections(RefStaff.Type.AllSections.GetByAlias("Employees").ID)
   Set oRows = SectionEmployeesRefStaff.FindRows("<ConditionGroup><Condition><Field>AccountName</Field><Op>STREQ</Op><Value>'" & UserSession.Properties("AccountName") & "'</Value></Condition></ConditionGroup>")

    Set oUser=oRows.Item(0)

    GetCurrentUser = oUser.ID
End Function

Комментариев нет:

Отправить комментарий