Scripts: различия между версиями
Внешний вид
Sidminik (обсуждение | вклад) Новая страница: «==Общие сведения== Раздел <code>'''Scripts'''</code> предназначен для добавления программной логики непосредственно в файл макета отчета. Это позволяет отчету быть самодостаточным: код из раздела выполняется в процессе формирования отчета. Внутри раздела можно...» |
Sidminik (обсуждение | вклад) |
||
| Строка 29: | Строка 29: | ||
End Function | End Function | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==ReturnYearsWithSuffix()== | ==ReturnYearsWithSuffix()== | ||
Версия от 01:20, 4 марта 2026
Общие сведения
Раздел Scripts предназначен для добавления программной логики непосредственно в файл макета отчета.
Это позволяет отчету быть самодостаточным: код из раздела выполняется в процессе формирования отчета.
Внутри раздела можно создавать собственные вспомогательные функции для выполнения сложных вычислений прямо «на лету».
ConcatFields()
Public Function ConcatFields(separator As String, ParamArray fields() As Object) As String
If fields Is Nothing Then Return "-"
Dim list As New System.Collections.Generic.List(Of String)
For Each f As Object In fields
If f Is Nothing Then Continue For
Dim elem As String = f.ToString().Trim()
If String.IsNullOrEmpty(elem) Then Continue For
list.Add(elem)
Next
If list.Count = 0 Then
Return "-"
Else
Return String.Join(separator, list.ToArray())
End If
End Function
ReturnYearsWithSuffix()
Public Function ReturnYearsWithSuffix(inputDate As Date) As String
Dim yearsDiff As Long = DateDiff(DateInterval.Year, inputDate, Now())
Dim resultDate As Long = yearsDiff
Dim resultString As String = yearsDiff.ToString()
If (resultDate > 20) Then
resultDate = resultDate Mod 10
End If
Select Case resultDate
Case 1
resultString &= $" год"
Case 2 To 4
resultString &= $" года"
Case Else
resultString &= $" лет"
End Select
Return resultString
End Function
FormatAsInitialsSurname()
Public Function FormatAsInitialsSurname(fullName As String) As String
Dim trimmedName As String = fullName.Trim()
Dim nameParts() As String = trimmedName.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
If nameParts.Length < 2 Then
Return fullName
End If
Dim surname As String = nameParts(0)
Dim firstNameInitial As Char = nameParts(1)(0)
Dim middleNameInitial As Char? = Nothing
If nameParts.Length >= 3 Then
middleNameInitial = nameParts(2)(0)
End If
Dim result As String = $"{firstNameInitial}."
If middleNameInitial.HasValue Then
result &= $"{middleNameInitial}."
End If
result &= $" {surname}"
Return result
End Function