Scripts: различия между версиями
Внешний вид
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| Строка 29: | Строка 29: | ||
End Function | End Function | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===Входные параметры=== | |||
separator (String): Символ или текст, который будет стоять между элементами (например, запятая или пробел). | |||
ParamArray fields() (Object): Список аргументов любого количества. Благодаря ParamArray в функцию можно передать как массив, так и просто перечислить значения через запятую. | |||
===Выходные данные=== | |||
String: Одна строка из объединенных элементов. Если данных нет, возвращается дефис "-". | |||
===Алгоритм=== | |||
*<code>If fields Is Nothing Then Return "-"</code> - Проверка на критическую ошибку. Если массив аргументов вообще не передан, функция сразу возвращает дефис. | |||
*<code>Dim list As New System.Collections.Generic.List(Of String)</code> - Создается временный список для хранения "чистых" строк, которые мы решим оставить. | |||
*<code>For Each f As Object In fields</code> - Начинается цикл по каждому переданному значению. | |||
*<code>If f Is Nothing Then Continue For</code> - Если текущий элемент пуст (null), он пропускается. | |||
*<code>Dim elem As String = f.ToString().Trim()</code> - Значение переводится в строку и очищается от лишних пробелов по краям. | |||
*<code>If String.IsNullOrEmpty(elem) Then Continue For</code> - Если после удаления пробелов строка оказалась пустой, она пропускается. | |||
*<code>list.Add(elem)</code> - "Валидная" строка добавляется в итоговый список. | |||
*<code>If list.Count = 0 Then Return "-"</code> - Если после проверки всех элементов список пуст (все было null или пробелы), возвращается дефис. | |||
*<code>Return String.Join(separator, list.ToArray())</code> - Все накопленные элементы склеиваются в одну строку через указанный разделитель. | |||
==ReturnYearsWithSuffix()== | ==ReturnYearsWithSuffix()== | ||
Версия от 01:25, 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
Входные параметры
separator (String): Символ или текст, который будет стоять между элементами (например, запятая или пробел). ParamArray fields() (Object): Список аргументов любого количества. Благодаря ParamArray в функцию можно передать как массив, так и просто перечислить значения через запятую.
Выходные данные
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- Если текущий элемент пуст (null), он пропускается.Dim elem As String = f.ToString().Trim()- Значение переводится в строку и очищается от лишних пробелов по краям.If String.IsNullOrEmpty(elem) Then Continue For- Если после удаления пробелов строка оказалась пустой, она пропускается.list.Add(elem)- "Валидная" строка добавляется в итоговый список.If list.Count = 0 Then Return "-"- Если после проверки всех элементов список пуст (все было null или пробелы), возвращается дефис.Return String.Join(separator, list.ToArray())- Все накопленные элементы склеиваются в одну строку через указанный разделитель.
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